【发布时间】:2019-02-11 22:36:48
【问题描述】:
当我声明一个类时,比如说,
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不创建实例。它将类对象分配给标识符B。你需要B = MyClass()(会抛出错误) -
那不是创建实例。
-
不带参数的正确创建方法是这样的:
B = MyClass(),但这不起作用,因为编写的__init__()方法要求您提供value参数。如果你给value一个默认的def __init__(self, value=None):你可以做B = MyClass()没有问题。