Что выведет этот код?
Iterable - это объект по которому можно пройтись. Для питона это любой объект у которого есть метод
Чтобы преобразовать какой то объект в
Первым делом смотриться метод
Но если у объекта нет метода
В метод
Для чего это нужно?
На самом деле это очень старый механизм и в реальности почти не нужный. Так называемая "legacy feature".
Но может быть полезен, когда у вас есть какой то объект и вы хотите как то проитерироваться по нему.
#iter #getitem
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
👍4🔥1