🔥 Записывайся на курс по ООП: stepik.org/a/114354 📙 Там тебя ждет: ✔ более 180 практических заданий по ООП ✔ более 300 тестовых заданий на проверку материала ✔ более 6 часов видеоматериала ✔ текстовые материалы по урокам, примеры кода ✔ Доступ к закрытому чату с дружественной обстановкой ✔ Сертификат в случае успешного прохождения курса 🎁 По промокоду EGOROFF можно получить 10% скидки на приобретение данного курса
Так. Вот что меня немного запутало и вроде бы разобрался, в классе Student мы аргумент self.index=0 внесли в метод __iter__, а в классе Mark мы этот аргумент внесли прямо в метод __init__, что бы разобраться я попробовал self.index = 0 в классе Student внести так же в метод __init__ , ну и как предполагалось. всё работает так же, т.е в обоих этих классах self.index = 0 можно сделать аргументом любого из методов - либо __iter__ либо __init__
Мне вот непонятен момент в начале. Где мы используем getitem. Мы пишем: for i in igor: print(i) А в методе getitem: return self.name[item] Я так понимаю, что цикл for берет igor и хочет его обойти. То есть, по логике он должен вывести Igor, Nikolaev, [3, 4...] Но не может этого сделать, тк не умеет. Тогда мы пишем getitem, который указывает, что нам нужно взять только name, или surname, или marks для их обхода. Но как цикл понимает, что in igor имеется в виду именно name, или surname, или marks, а не сам экземпляр? Как-то не очень логично
Привет, а как много еще будет видео по ООП. И еще есть вопрос, эффективен ли способ изучения питона, когда ты по сути просто переписываешь код из видеоурока, разбирая его (к примеру смотреть как создать змейку или еще что-нибудь)?
вопрос почему в class Student в методе __iter__ в начале возвращаем self, а потом в методе __iter__ класса Student возвращаем не self.marks, а iter(self.marks)?
Для чего мы потом self.index зануляли? Я подумал, что для того, чтобы при повторной итерации над igor мы могли бы обойти еще раз. Но нет, мы можем обойти и без занесения. Так смысл тогда от этой строки?
как вариант можно так сделать, так как при обращении к обьекту оператор цикла обращаеться к первоночальному итеру (с нулевым индексом) class Marks: def __init__(self, values): self.value = values def __iter__(self): print('call iter marks') self.index = 0 return self def __next__(self): print('call next marks') if self.index >= len(self.value): raise StopIteration letter = self.value[self.index] self.index += 1 return letter
🔥 Записывайся на курс по ООП: stepik.org/a/114354
📙 Там тебя ждет:
✔ более 180 практических заданий по ООП
✔ более 300 тестовых заданий на проверку материала
✔ более 6 часов видеоматериала
✔ текстовые материалы по урокам, примеры кода
✔ Доступ к закрытому чату с дружественной обстановкой
✔ Сертификат в случае успешного прохождения курса
🎁 По промокоду EGOROFF можно получить 10% скидки на приобретение данного курса
думаю, что можно и так
def __iter__(self):
print('Call iter')
self.index = -1
return self
genius
Так. Вот что меня немного запутало и вроде бы разобрался, в классе Student мы аргумент self.index=0 внесли в метод __iter__, а в классе Mark мы этот аргумент внесли прямо в метод __init__, что бы разобраться я попробовал self.index = 0 в классе Student внести так же в метод __init__ , ну и как предполагалось. всё работает так же, т.е в обоих этих классах self.index = 0 можно сделать аргументом любого из методов - либо __iter__ либо __init__
Большое спасибо за видео! Очень важная и полезная для меня тема 👍
Спасибо Игорь.
Тем кто еще думает о том, что стоит ли покупать подписку? - Стоит!
Однозначно.
Мне вот непонятен момент в начале. Где мы используем getitem.
Мы пишем:
for i in igor:
print(i)
А в методе getitem:
return self.name[item]
Я так понимаю, что цикл for берет igor и хочет его обойти. То есть, по логике он должен вывести
Igor,
Nikolaev,
[3, 4...]
Но не может этого сделать, тк не умеет. Тогда мы пишем getitem, который указывает, что нам нужно взять только name, или surname, или marks для их обхода. Но как цикл понимает, что in igor имеется в виду именно name, или surname, или marks, а не сам экземпляр?
Как-то не очень логично
Привет👋. Ты будешь делать сайты на django или flask? Заранее спасибо)
Давай. Пожалуйста)
@@miles7610 ьеь, с Дударя пришёл?))
Спасибо!
Не самый удачный урок. Все как-то дергано, особенно под конец
Привет, а как много еще будет видео по ООП. И еще есть вопрос, эффективен ли способ изучения питона, когда ты по сути просто переписываешь код из видеоурока, разбирая его (к примеру смотреть как создать змейку или еще что-нибудь)?
Ну такое) Лучше конечно брать дополнительные задания и прорешивать
Это нормально))) если он что-то забудет, он просто откроет тот самый код, лучше еще комментарии оставлять в самом коде.
вопрос
почему в class Student в методе __iter__ в начале возвращаем self, а потом в методе __iter__ класса Student возвращаем не self.marks, а iter(self.marks)?
Возможно ли чтобы внутри класса Student метод iter обходил по индексу не конкретный атрибут name/surname/marks, а именно список из атрибутов?
Да, можешь указать там список и в нем перечислить атрибуты
def __iter__(self):
self.list_of_init = [self.name, self.surname,list(self.marks)]
self.index = 0
return iter(self.list_of_init)
После 5го просмотра вкурил👍😀
после 5ти итераций?)
@@egoroffchannel 🤣🤣🤣
Для чего мы потом self.index зануляли? Я подумал, что для того, чтобы при повторной итерации над igor мы могли бы обойти еще раз. Но нет, мы можем обойти и без занесения. Так смысл тогда от этой строки?
как вариант можно так сделать, так как при обращении к обьекту оператор цикла обращаеться к первоночальному итеру (с нулевым индексом)
class Marks:
def __init__(self, values):
self.value = values
def __iter__(self):
print('call iter marks')
self.index = 0
return self
def __next__(self):
print('call next marks')
if self.index >= len(self.value):
raise StopIteration
letter = self.value[self.index]
self.index += 1
return letter
с этим никак не связан yield? или это про другое и не связанно с итераторами?
yield используется для создания генераторов.
Не совсем понятна последняя реализация с оценками
где я могу найти ваш код? я делаю все как вы говоритe но у меня другой результат -_-