我有一个班级:
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
类的实例时,甚至没有调用 get 。我正在尝试做的是,如果索引的结果返回多个项(列表),则返回ItemClass
的新实例。所以我希望如此:
>>> il = ItemList(contents)
>>> type(il[1:3])
<class 'ItemList'>
但我得到了这个:
>>> il = ItemList(contents)
>>> type(il[1:3])
<class 'list'>
我做错了什么?
答案 0 :(得分:2)
我认为你想要更像以下内容:
class ItemList(UserList):
data = []
def __init__(self, contents):
super().__init__()
self.data = contents
def __getitem__(self, item):
result = UserList.__getitem__(self, item)
if type(result) is list:
if len(result) > 1:
return ItemList(result)
else:
return result