我有这个代码:
class main():
params = {}
class a(main):
def __init__(self):
self.params['test'] = "111aa"
print self.params
class b(main):
def __init__(self):
self.params['be'] = "222bbb"
print self.params
a()
#{'test': '111aa'}
b()
#{'test': '111aa', 'be': '222bbb'}
Run Code Online (Sandbox Code Playgroud)
我需要从b打印才有{'be': '222bbb'}
办法怎么做?
谢谢
试试这个:
class main(object): # use new-style classes!
def __init__(self):
self.params = {}
class a(main):
def __init__(self):
super(a, self).__init__()
self.params['test'] = "111aa"
print self.params
class b(main):
def __init__(self):
super(b, self).__init__()
self.params['be'] = "222bbb"
print self.params
Run Code Online (Sandbox Code Playgroud)
请注意,在您的代码params中定义为类属性.通过__init__在超类中定义它,我们声明它是一个实例属性.还要注意子类调用__init__超类.
通过这种方式,我们确保每个实例都有自己的params属性,而不共享它.你不能期望在实例之间共享一个对象并让每个实例具有不同的值,这是一个矛盾.