覆蓋__get__我有一個類:問題在Python
from collections import UserList
class ItemList(UserList):
data = []
def __init__(self, contents):
self.data = contents
def __get__(self, index):
result = list.__get__(self, index)
if type(result) is list:
if len(result) > 1:
return ItemList(result)
else:
return result
似乎在我的情況下得到甚至沒有被調用時,我指數ItemList
類的一個實例。我試圖做的是返回ItemClass
的新實例,如果索引的結果返回多個項目(列表)。所以,我希望這樣的:
>>> il = ItemList(contents)
>>> type(il[1:3])
<class 'ItemList'>
但我發現了這一點:
>>> il = ItemList(contents)
>>> type(il[1:3])
<class 'list'>
我在做什麼錯?
@PadraicCunningham的['UserList'](https://docs.python.org/3.2/library/collections.html#collections.UserList )我假設的標準庫中的類。 –
是的,抱歉,我沒有指定。編輯以提供清晰度。 –
它是'__getitem__',而不是'__get__',你想覆蓋。 – kindall