Python:类和子类问题

Pet*_*ter 2 python class

我有这个代码:

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'} 办法怎么做?

谢谢

Ósc*_*pez 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
Run Code Online (Sandbox Code Playgroud)

请注意,在您的代码params中定义为属性.通过__init__在超类中定义它,我们声明它是一个实例属性.还要注意子类调用__init__超类.

通过这种方式,我们确保每个实例都有自己的params属性,而不共享它.你不能期望在实例之间共享一个对象并让每个实例具有不同的值,这是一个矛盾.