簡體   English   中英

Python內置類型子類化

[英]Python built-in types subclassing

這段代碼出了什么問題?

class MyList(list):
  def __init__(self, li): self = li

當我用MyList([1, 2, 3])創建MyList的實例,然后我打印這個實例時,我得到的只是一個空列表[] 如果MyDict是子類list ,那么MyDict不是一個list嗎?

注意:在Python 2.x和3.x中都有。

您需要調用列表初始化程序:

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'>

我自己想出來了: selflist的子類的一個實例,所以它不能被列為仍然是MyList對象的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM