我只是开始乱搞一些课程; 但是,我遇到了一个问题.
class MyClass(object):
def f(self):
return 'hello world'
print MyClass.f
Run Code Online (Sandbox Code Playgroud)
返回上一个脚本<unbound method MyClass.f>
而不是预期值.我该如何解决?
Gor*_*son 13
MyClass.f
指的是函数对象f,它是MyClass的一个属性.在您的情况下,f是一个实例方法(具有自身参数),因此在特定实例上调用它.它是"未绑定的",因为你指的是f而没有指定一个特定的类,有点像没有汽车的方向盘.
您可以创建一个MyClass实例并从中调用f,如下所示:
x = MyClass()
x.f()
Run Code Online (Sandbox Code Playgroud)
(这指定调用f的实例,因此您可以引用实例变量等.)
你用的是f static method
.这些方法不绑定到特定类,只能引用它们的参数.
将创建静态方法并使用如下:
class MyClass(object):
def f(): #no self parameter
return 'hello world'
print MyClass.f()
Run Code Online (Sandbox Code Playgroud)
创建一个类的实例: m = MyClass()
然后m.f()
用来调用函数
现在你可能想知道为什么你不必将参数传递给函数('self'param).这是因为您调用该函数的实例实际上是作为第一个参数传递的.
也就是说,MyClass.f(m)
equals m.f()
,where m
是类的实例对象MyClass
.
祝好运!