2024-04-25 08:42:30 发布
网友
下面两个Ruby和Python代码是类方法的示例。为什么python方法不允许通过类访问python对象?在
Python代码
class student: b = 78 @classmethod def foo(var): return var.b z = student() print z.foo() # => 78
Ruby代码
来自Ruby doc^{}:
display(port=$>)Prints obj on the given port (default $>). Equivalent to: def display(port=$>) port.write self end
display(port=$>)
Prints obj on the given port (default $>). Equivalent to:
obj
$>
def display(port=$>) port.write self end
所以它只显示接收器,它是一个Student实例。我看不出这和类方法有什么关系。在
Student
实际上可以调用类方法Student.display:
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)。在
z.class
Ruby没有类方法,只有实例方法。在您的例子中,foo位于Student的singleton类的实例方法中。在
foo
一次调用一个Ruby实例是很明显的,为什么一个方法在一个实例上是不可能的。在
来自Ruby doc^{} :
所以它只显示接收器,它是一个
Student
实例。我看不出这和类方法有什么关系。在实际上可以调用类方法
Student.display
:关于ruby方面的问题:ruby确实允许通过类的读取器通过对象访问类方法:
^{pr2}$z.class
返回对象的类(在本例中是Student
)。在Ruby没有类方法,只有实例方法。在您的例子中,
foo
位于Student
的singleton类的实例方法中。在一次调用一个Ruby实例是很明显的,为什么一个方法在一个实例上是不可能的。在
相关问题 更多 >
编程相关推荐