当我声明一个类时
class MyClass:
def __init__(self, value):
self.data = value
def show(self):
print self.data`
然后创建一个实例
A = MyClass(1)
行为与我所期望的一样(A.show
的输出是1
)。但是当我创建一个没有参数的实例时
B = MyClass
然后手动设置值
B.data = 2
调用B.show
返回TypeError: unbound method show() must be called with MyClass instance as first argument (got nothing instead)
有人能解释一下为什么吗
B
是类定义的另一个名称MyClass
在类定义上创建名为
data
的属性B.show
是对MyClass
上定义的函数的引用。它是一个实例函数,期望在MyClass
的实例上被调用(这就是A
是什么,而不是B
是什么)实例作为第一个参数隐式传递给函数。可以使用实例显式调用函数:
相关问题 更多 >
编程相关推荐