如何使用Python的super()更新父值?

| 我是继承的新手,以前关于继承和Python的super()函数的所有讨论都让我有些头疼。我目前使用以下代码更新父对象的值。
#!/usr/bin/env python
# test.py

class Master(object):
    mydata = []
    def __init__(self):
        s1 = Sub1(self)
        s2 = Sub2(self)

class Sub1(object):
    def __init__(self,p):
        self.p = p
        self.p.mydata.append(1)

class Sub2(object):
    def __init__(self,p):
        self.p = p
        self.p.mydata.append(2)

if __name__ == \"__main__\":
    m = Master()
    print m.mydata
此命令行返回如下:   user @ host:〜$ ./test.py   [1,2] 是否有更好的方法通过super()而不是将\“ self \”引用传递给子级?     
已邀请:
super
仅适用于类继承结构,其中
Sub1
Sub2
Master
的子类。 在您的示例中,您使用一个包含结构,
Sub1
Sub2
Master
的属性,并且对
super
调用没有用处。 同样,您通常真的不想使用可变列表作为类属性;附加它会全局(而不是按实例)更改列表的一个副本(在类中定义);而是使用
Master.__init__
方法初始化列表:
class Master(object):
    mydata = None
    def __init__(self):
        self.mydata = []
调用
__init__
函数以建立一个新实例,并通过向其中的ѭ12assign分配一个新的空列表,确保每个实例都有其自己的副本。     
这是通过继承进行操作的方式。首先,您拥有作为父类的Master,然后Sub1和Sub2将继承于Master并成为子类。所有子类都可以访问父类中的方法和变量。这可能与以下内容重复:在Python中从子类调用父类的方法?
#!/usr/bin/env python
# test.py

class Master(object):
    mydata = []
    def __init__(self):
        s1 = Sub1()
        s2 = Sub2()

class Sub1(Master):
    def __init__(self):
        super(Sub1, self).mydata.append(1)

class Sub2(Master):
    def __init__(self):
        super(Sub2, self).mydata.append(2)

if __name__ == \"__main__\":
    m = Master()
    print m.mydata
    

要回复问题请先登录注册