【发布时间】:2011-05-01 14:55:32
【问题描述】:
我是继承新手,之前关于继承和 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”引用传递给孩子?
【问题讨论】:
-
您是否打算使 mydata 成为类级别的可变对象?代码运行后,
Master.mydata为[1, 2]。 -
这里没有继承,只有组合。
标签: python inheritance super