Я бы хотел изменить поведение отображений списка Python, чтобы вместо list
они создавали подкласс list
, который я написал.(Примечание: я не думаю, что это хорошая идея; я делаю это для развлечения, а не для реального использования.)
Вот что я сделал:
old_list = list
class CallableList(old_list):
def __init__(self, *args):
old_list.__init__(self)
for arg in args:
self.append(arg)
def __call__(self, start, end=None):
if end:
return self[start:end]
return self[start]
list = CallableList
Однаждыэто сделано, это возвращает третий элемент списка:
x = list(1, 2, 3)
print x(2)
, но все равно выдает ошибку:
x = [1, 2, 3]
print x(2)
Ошибка довольно проста:
Traceback (most recent call last):
File "list_test.py", line 23, in <module>
print x(2)
TypeError: 'list' object is not callable
Я думаю, что, вероятно, нет способа сделать это, но я не могу найти ничего, что говорит так однозначно.Есть идеи?