Python新手使用类时遇到问题
我刚开始尝试使用类,但遇到了一些问题。
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()
是一样的,其中 m
是 MyClass
类的一个实例对象。
祝你好运!
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()