Python新手在使用类时遇到问题

时间:2010-02-09 21:43:23

标签: python class

我刚刚开始在课堂上乱七八糟;但是,我遇到了一个问题。

class MyClass(object):
    def f(self):
        return 'hello world'
print MyClass.f

上一个脚本返回<unbound method MyClass.f>而不是预期值。我该如何解决这个问题?

2 个答案:

答案 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的实例对象。

祝你好运!