2017-11-11 102 views
0

我有这样的代码如何在没有返回空列表的情况下继承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__方法返回一个空名单。那么如何从列表中扩展我的班级,但却没有收到一个空列表?

+1

你混淆了继承和组合。如果你的类继承自'list','self' *就是一个列表。您不需要将另一个列表作为属性粘贴到它上面。 – user2357112

+0

@ user2357112,谢谢你的回复。但是我可以将另一个列表粘贴到一个属性上,而我自己不是一个列表吗? –

+0

如果你不想'self'是一个列表,不要从'list'继承。 – user2357112

回答

0

我觉得这里有一个问题是,你没有__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[:] 

其中,打印时,在你的榜样lineslines.lines,应该输出

<__main__.lines_type object at 0x...> 
[1, 2, 3] 
+0

非常感谢你 –

+0

@GrakT没问题:D –

相关问题