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

6 python class

我只是开始乱搞一些课程; 但是,我遇到了一个问题.

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)


ron*_*ron 6

创建一个类的实例: m = MyClass()

然后m.f()用来调用函数

现在你可能想知道为什么你不必将参数传递给函数('self'param).这是因为您调用该函数的实例实际上是作为第一个参数传递的.

也就是说,MyClass.f(m)equals m.f(),where m是类的实例对象MyClass.

祝好运!