tg-me.com/pythrone/14
Last Update:
Что выведет этот код?
Iterable - это объект по которому можно пройтись. Для питона это любой объект у которого есть метод __iter__
или __getitem__
.
Чтобы преобразовать какой то объект в list
, нужно проитерироваться по объекту, т.е. вызвать iter(iterable)
.
Первым делом смотриться метод __iter__
, если он возвращает iterator
, то переберая все элементы итератора строиться list
.
Но если у объекта нет метода __iter__
, но есть метод __getitem__
, то создается iterator
на основе этого метода.
В метод __getitem__
по очередно передаются индексы (просто числа) от 0 до момента пока __getitem__
не выбросит ошибку StopIteration
или IndexError
.
Для чего это нужно?
На самом деле это очень старый механизм и в реальности почти не нужный. Так называемая "legacy feature".
Но может быть полезен, когда у вас есть какой то объект и вы хотите как то проитерироваться по нему.
class Library:
def __init__(self, books: list):
self.books = books
def __getitem__(self, index):
return self.books[index]
for book in Library(["a", "b", "c"]):
print(book)
#iter #getitem
BY PyThrone

Share with your friend now:
tg-me.com/pythrone/14