Python内置类型子类化

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)