我有一堂课:
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'>
我究竟做错了什么?
最佳答案
我认为您想要更多类似以下内容的东西:
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
关于python - 在Python中覆盖__get__的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26920893/