Python与Ruby类方法

2024-04-25 08:42:30 发布

您现在位置:Python中文网/ 问答频道 /正文

下面两个Ruby和Python代码是类方法的示例。为什么python方法不允许通过类访问python对象?在

Python代码

class student:
    b = 78

    @classmethod
    def foo(var):
        return var.b

z = student()
print z.foo()    # => 78

Ruby代码

^{pr2}$

Tags: 对象方法代码示例returnfoovardef
3条回答

来自Ruby doc^{}

display(port=$>)

Prints obj on the given port (default $>). Equivalent to:

 def display(port=$>)
   port.write self
 end

所以它只显示接收器,它是一个Student实例。我看不出这和类方法有什么关系。在

实际上可以调用类方法Student.display

z.class.display

关于ruby方面的问题:ruby确实允许通过类的读取器通过对象访问类方法:

class Student
  @@b = 78

  def self.foo
    @@b
  end
end

z = Student.new
puts z.class.foo 

z.class返回对象的类(在本例中是Student)。在

^{pr2}$

Ruby没有类方法,只有实例方法。在您的例子中,foo位于Student的singleton类的实例方法中。在

一次调用一个Ruby实例是很明显的,为什么一个方法在一个实例上是不可能的。在

相关问题 更多 >

    热门问题