Python:类和子类问题

时间:2013-08-20 21:51:14

标签: 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'}

我需要从b打印{'be': '222bbb'} 有什么方法可以做到吗?

由于

1 个答案:

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