Telegram Group & Telegram Channel
Что выведет этот код?

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



tg-me.com/pythrone/14
Create:
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

View MORE
Open in Telegram


PyThrone Telegram | DID YOU KNOW?

Date: |

Traders also expressed uncertainty about the situation with China Evergrande, as the indebted property company has not provided clarification about a key interest payment.In economic news, the Commerce Department reported an unexpected increase in U.S. new home sales in August.Crude oil prices climbed Friday and front-month WTI oil futures contracts saw gains for a fifth straight week amid tighter supplies. West Texas Intermediate Crude oil futures for November rose $0.68 or 0.9 percent at 73.98 a barrel. WTI Crude futures gained 2.8 percent for the week.

PyThrone from kr


Telegram PyThrone
FROM USA