如何在没有返回空列表的情况下继承Python列表?
问题描述:
我有这样的代码如何在没有返回空列表的情况下继承Python列表?
class lines_type(list):
def __init__(self, lines):
self.lines = lines[:]
lines = lines_type([1, 2, 3])
print(lines)
print(lines.lines)
而且我的输出是
[]
[1, 2, 3]
但是我预期的输出是这样的
<__main__.lines_type object at 0x00EC6410>
[1, 2, 3]
我认为类列表__init__
方法返回一个空名单。那么如何从列表中扩展我的班级,但却没有收到一个空列表?
答
我觉得这里有一个问题是,你没有__init__
列表在子类__init__
- 这样做:
class lines_type(list):
def __init__(self, lines):
super().__init__(self)
self.lines = lines[:]
但是,如果你不想‘自我’是一个列表,那么不要从列表中继承。
class lines_type(object):
def __init__(self, lines):
self.lines = lines[:]
其中,打印时,在你的榜样lines
和lines.lines
,应该输出
<__main__.lines_type object at 0x...>
[1, 2, 3]
+0
非常感谢你 –
+0
@GrakT没问题:D –
你混淆了继承和组合。如果你的类继承自'list','self' *就是一个列表。您不需要将另一个列表作为属性粘贴到它上面。 – user2357112
@ user2357112,谢谢你的回复。但是我可以将另一个列表粘贴到一个属性上,而我自己不是一个列表吗? –
如果你不想'self'是一个列表,不要从'list'继承。 – user2357112