2

我有这个代码:

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'} 有什么办法吗?

谢谢

4

1 回答 1

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属性,而不是共享它。你不能指望在实例之间共享一个对象并且让每个实例都有不同的值,这是一个矛盾。

于 2013-08-20T21:55:19.230 回答