设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1982|回复: 6
打印 上一主题 下一主题

[已经解决] def后面的方法为什么有个self前缀,有什么作用呢?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
跳转到指定楼层
1
发表于 2014-12-10 09:28:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
module Cache
  #--------------------------------------------------------------------------
  # ● 获取动画图像
  #--------------------------------------------------------------------------
  def self.animation(filename, hue)
    load_bitmap("Graphics/Animations/", filename, hue)
  end

为什么在方法名称之前加上了self,这里的self是指什么呢?调用者还是类本身?
这种方法和普通命名的方法有什么区别呢?

好迷茫啊

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21626
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2014-12-10 10:15:29 | 只看该作者
本帖最后由 喵呜喵5 于 2014-12-10 13:58 编辑
  1. class A
  2.   def r
  3.     p "a"
  4.   end
  5.   def self.r
  6.     p "b"
  7.   end
  8. end
  9. a=A.new
  10. a.r
  11. A.r
复制代码

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
3
发表于 2014-12-10 11:16:19 | 只看该作者
以前有人跟我说,module里面的要加self,class不用加。虽然不是很懂不过好像有道理?

点评

很没道理,嗯。我经常在module里面不加self,在class里面加的  发表于 2014-12-10 12:33
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-12-10 12:40:36 | 只看该作者
self 指的是模块本身,在这里可以替换成 Cache

用法的话就看沙发的代码吧。不太建议你深究其中的原理。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
5
 楼主| 发表于 2014-12-10 12:50:08 | 只看该作者
喵呜喵5 发表于 2014-12-10 10:15
class A
  def r
    p "a"

| ω・´)有点像静态方法。。。

点评

就这么理解吧。  发表于 2014-12-10 12:51
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
6
 楼主| 发表于 2014-12-10 12:51:12 | 只看该作者
企鹅达达 发表于 2014-12-10 11:16
以前有人跟我说,module里面的要加self,class不用加。虽然不是很懂不过好像有道理? ...

应该都可以加的感觉~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
7
 楼主| 发表于 2014-12-10 12:53:32 | 只看该作者
taroxd 发表于 2014-12-10 12:40
self 指的是模块本身,在这里可以替换成 Cache

用法的话就看沙发的代码吧。不太建议你深究其中的原理。 ...

恩恩。大概知道怎么用self,像cache这种只运行一次的类,没有实例化的必要,直接用self调用类本身的方法就可以了。  。。 而像窗口那种需要多次实例化的类,就需要有对象独立的方法才行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 15:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表