У меня есть класс:Выпуск перекрывая __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