【发布时间】:2018-09-18 21:56:22
【问题描述】:
我想使用 super 函数将字符串写入父对象的特定实例的列表中。到目前为止,这是我的代码:
#!/usr/bin/env python
# test.py
class Master(object):
def __init__(self):
pass
class Sub1(Master):
list = []
def __init__(self):
pass
class Sub2(Sub1):
def __init__(self, name):
super(Sub2, self).list.append(name)
m = Master()
m.foo = Sub1()
m.foo.bar = Sub2('something')
m.bla = Sub1()
m.bla.blub = Sub2('else')
print(m.foo.list)
在这种情况下,输出当然是
['something', 'else']
但我希望它只是 'something'。
我怎样才能做到这一点?
我试过了:
class Sub1(Master):
def __init__(self):
self.list = []
产量:
AttributeError: 'super' object has no attribute 'list'
有简单的解决方案吗?
【问题讨论】:
-
我认为您不应该在这里使用继承。也许将
parent参数传递给__init__? -
你必须从你的
Sub2__init__方法调用Sub1构造函数。 -
你确定你真的需要继承吗?继承是
is-a关系,而不是“包含”关系。 -
不,我不确定我是否需要继承.... 在这种情况下,它看起来像
Master包含Sub1其中包含Sub2,但后来我真的想继承某些参数和方法。在现实生活中,它类似于动物 --> 哺乳动物 --> 狗。
标签: python inheritance