Python中的问题重写
我有一门课:Python中的问题重写,python,list,inheritance,Python,List,Inheritance,我有一门课: 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 lis
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(目录)
>>>类型(il[1:3])
但我明白了:
>>> il = ItemList(contents)
>>> type(il[1:3])
<class 'list'>
>il=ItemList(目录)
>>>类型(il[1:3])
我做错了什么 我想你想要的是以下内容:
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
@PadraicCunningham是我假设的标准库中的类。是的,很抱歉我没有指定。编辑以提供清晰性。它是
\uuuuu getitem\uuuuuuuuuuuu
,而不是您想要覆盖的\uuuuuuuu get\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
。非常感谢。