我刚刚开始在课堂上乱七八糟;但是,我遇到了一个问题。
class MyClass(object):
def f(self):
return 'hello world'
print MyClass.f
上一个脚本返回<unbound method MyClass.f>
而不是预期值。我该如何解决这个问题?
答案 0 :(得分:13)
MyClass.f
指的是函数对象f,它是MyClass的一个属性。在您的情况下,f是一个实例方法(具有自身参数),因此在特定实例上调用它。它是“未绑定的”,因为你指的是f而没有指明一个特定的类,有点像没有汽车的方向盘。
您可以创建一个MyClass实例并从中调用f,如下所示:
x = MyClass()
x.f()
(这指定调用f的实例,因此您可以引用实例变量等。)
您使用f作为static method
。这些方法不绑定到特定的类,只能引用它们的参数。
将创建静态方法并使用如下:
class MyClass(object):
def f(): #no self parameter
return 'hello world'
print MyClass.f()
答案 1 :(得分:6)
创建班级的实例:m = MyClass()
然后使用m.f()
来调用函数
现在你可能想知道为什么你不必将参数传递给函数('self'param)。这是因为您调用该函数的实例实际上是作为第一个参数传递的。
即MyClass.f(m)
等于m.f()
,其中m
是类MyClass
的实例对象。