Это кажется, что это должно быть просто:Заменить __str__ метод на объект списка в Python
Я хочу list
, как и любой другой list
, за исключением того, что имеет другой .__str__
метод.
- Попытка установить
object.__str__ = foo
результатов в ошибке только для чтения - Пытаюсь подкласс
list
означает, что необходимо каким-то образом преобразовать существующийlist
к экземпляру подкласса. Для этого требуется либо копирование всех атрибутов вручную (огромная боль), либо как-то копирование их автоматически, что я не знаю, как это сделать. - Попытка написать обертку вокруг объекта
list
означает, что мне нужно выяснить способ отправки всех сообщений обернутому объекту, кроме.__str__
, который я обрабатываю своим методом. Не знаю, как это сделать.
Любые альтернативы или решения # 2 или # 3 очень ценятся. Благодаря!
Адресация 2. Преобразование существующего списка выполняется автоматически, поскольку списки являются итерабельными, а конструктор списка принимает итерабельность. Просто попробуйте myList (anyList). –
Есть ли причина, по которой вы не можете использовать myList для начала? В качестве альтернативы рассмотрите возможность записи функции, которая обертывается вокруг списка, поэтому вы вызываете say pretty_print_list (the_list) вместо str (the_list) – saffsd
@saffsd: это сработает, но вам придется помнить всегда pretty_print вместо печати, что Я пытаюсь избежать. – elliot42