wha*_*ide 7 python initialization built-in-types subclassing
这段代码出了什么问题?
class MyList(list):
def __init__(self, li): self = li
Run Code Online (Sandbox Code Playgroud)
例如,当我创建一个MyListwith的实例,MyList([1, 2, 3])然后我打印这个实例时,我得到的只是一个空列表[].如果MyDict是子类list,不是MyDict一个list本身?
注意:在Python 2.x和3.x中都有.
Mar*_*ers 15
您需要调用列表初始化程序:
class MyList(list):
def __init__(self, li):
super(MyList, self).__init__(li)
Run Code Online (Sandbox Code Playgroud)
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'>
Run Code Online (Sandbox Code Playgroud)