reversed
будет работать с двумя типами объектов:
- последовательность (например,
list
) - итератор с магическим методом
__reversed__
Если у вас есть пользовательская последовательность, и вы можете взять len()
этой последовательности, вы можете пойти - иначе вам нужно добавить магический метод __len__
;если вы не можете (например, потому что длина неизвестна), то вы не можете ее лениво перевернуть.
Если у вас есть пользовательский итератор, убедитесь, что у него есть __reversed__
магический метод: __reversed__
должен вернутьновый итератор, возвращающийся назад;Опять же, если вы не можете предоставить один (например, потому что длина неизвестна), то вы не можете лениво изменить его.
Примечание : для получения дополнительной информации о создании пользовательских итераций см. thisответить .