我有这个代码:
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'}
有什么办法吗?
谢谢
最佳答案
试试这个:
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
被定义为 class 属性。通过在父类(super class)的 __init__
中定义它,我们声明它是一个实例 属性。另请注意,子类在父类(super class)上调用 __init__
。
通过这种方式,我们确保每个实例都有自己的 params
属性,而不共享它。您不能指望在实例之间共享一个对象并让每个实例具有不同的值,这是自相矛盾的。
关于Python:类和子类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345556/