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
。非常感谢。