* 在class内部
,self代表的是当前这个类本身
$ cat a.rb class A puts self end $ ruby a.rb A
* 在method内部
,self代表的是这个方法的当前调用者
$ cat a.rb class A def x p self end end A.new.x $ ruby a.rb #<A:0x00000002705fb0>
方法前加self,代表类方法---C++中类的静态方法
$ cat a.rb class A def self.x p self end end A.x A.new.x $ ruby a.rb A a.rb:7:in `<main>': undefined method `x' for #<A:0x00000001a83f58> (NoMethodError)
当然也可以这么测试一下,可以看到类方法可以打印出my_times这个方法