此代码有什么问题?
class MyList(list):
def __init__(self, li): self = li
当我使用MyList
创建MyList([1, 2, 3])
的实例,然后我打印此实例时,我得到的只是一个空列表[]
。如果MyDict
正在继承list
,那么MyDict
是list
本身吗?
注意:在Python 2.x和3.x中都有。
答案 0 :(得分:15)
您需要调用列表初始值设定项:
class MyList(list):
def __init__(self, li):
super(MyList, self).__init__(li)
在函数中分配给self
只是用列表替换局部变量,而不是为实例赋值:
>>> class MyList(list):
... def __init__(self, li):
... super(MyList, self).__init__(li)
...
>>> ml = MyList([1, 2, 3])
>>> ml
[1, 2, 3]
>>> len(ml)
3
>>> type(ml)
<class '__main__.MyList'>
答案 1 :(得分:0)
我自己想出来了:self
是list
的子类的实例,因此无法将其转换为仍然是MyList
对象的列表。