如何在没有返回空列表的情况下子类化 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[:]
在您的示例中打印 lines
和 lines.lines
时,应该输出
<__main__.lines_type object at 0x...>
[1, 2, 3]
我有这个代码
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[:]
在您的示例中打印 lines
和 lines.lines
时,应该输出
<__main__.lines_type object at 0x...>
[1, 2, 3]