我有这段代码:
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'}
我需要从b打印{'be': '222bbb'}
有什么方法可以做到吗?
由于
答案 0 :(得分:6)
试试这个:
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
请注意,代码中params
被定义为类属性。通过在超类的__init__
中定义它,我们声明它是实例属性。另请注意,子类在超类上调用__init__
。
通过这种方式,我们确保每个实例都有自己的params
属性,而不共享它。你不能期望在实例之间共享一个对象,并且每个实例都有不同的值,这是一个矛盾。