[英]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'>
我自己想出來了: self
是list
的子類的一個實例,所以它不能被列為仍然是MyList
對象的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.