如何在没有返回空列表的情况下继承Python列表?

时间:2017-11-11 04:45:12

标签: python python-3.x subclass

我有这段代码

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 个答案:

答案 0 :(得分:0)

我认为这里的一个问题是你没有__init__子类'__init__中的列表 - 所以这样做:

class lines_type(list):
    def __init__(self, lines):
        super().__init__(self)
        self.lines = lines[:]

但是,如果您不希望“self”成为列表,则不要从列表中继承。

class lines_type(object):
    def __init__(self, lines):
        self.lines = lines[:]

,在您的示例中打印lineslines.lines时,应输出

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