如何在没有返回空列表的情况下子类化 Python 列表?

How to subclass Python list without a returned empty list?

我有这个代码

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]

我认为 class 的 __init__ 方法列出 returns 一个空列表。那么如何从列表中扩展我的 class 但不接收空列表?

我认为这里的一个问题是您没有 __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]