Python新手使用类时遇到问题

6 投票
2 回答
561 浏览
提问于 2025-04-15 19:05

我刚开始尝试使用类,但遇到了一些问题。

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

之前的代码返回的是 <unbound method MyClass.f>,而不是我想要的值。我该怎么解决这个问题呢?

2 个回答

6

首先,创建一个你的类的实例:m = MyClass()

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

你可能会好奇,为什么调用函数的时候不需要传一个参数(就是那个'self'参数)。其实,调用这个函数的实例会自动作为第一个参数传进去。

换句话说,MyClass.f(m)m.f() 是一样的,其中 mMyClass 类的一个实例对象。

祝你好运!

13

MyClass.f 指的是 MyClass 这个类里的一个函数对象 f。在你的例子中,f 是一个实例方法(它有一个 self 参数),所以它是针对某个具体的实例来调用的。之所以说它是“未绑定的”,是因为你在提到 f 时并没有指定具体的类,就像提到方向盘但没有提到汽车一样。

你可以创建一个 MyClass 的实例,然后像这样调用 f:

x = MyClass()
x.f()

(这样就指定了从哪个实例来调用 f,这样你就可以访问实例变量等内容。)

你现在使用 f 作为一个 静态方法。这些方法并不绑定到某个特定的类,只能引用它们的参数。

一个静态方法的创建和使用方式如下:

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

撰写回答