Python | Вопросы собесов
前往频道在 Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
显示更多📈 Telegram 频道 Python | Вопросы собесов 的分析概览
频道 Python | Вопросы собесов (@python_easy_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 12 632 名订阅者,在 技术与应用 类别中位列第 9 924,并在 俄罗斯 地区排名第 51 115 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 12 632 名订阅者。
根据 17 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -111,过去 24 小时变化为 0,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 6.00%。内容发布后 24 小时内通常能获得 4.29% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 758 次浏览,首日通常累积 542 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 2。
- 主题关注点: 内容集中在 ставь, модуль, строка, docker, alice 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
凭借高频更新(最新数据采集于 18 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
12 632
订阅者
无数据24 小时
-257 天
-11130 天
帖子存档
12 632
Что знаешь про агрегацию ?
Спросят с вероятностью 3%
Агрегация в ООП — это концепция, при которой один класс включает в себя другой класс в качестве части, но обе части могут существовать независимо друг от друга. Агрегация описывает "имеет-a" отношения между объектами, где один объект является контейнером или коллекцией для другого объекта, но не несет ответственности за его существование.
Рассмотрим простой пример с классами
Person и Address:
class Address:
def __init__(self, street, city):
self.street = street
self.city = city
def display(self):
return f"{self.street}, {self.city}"
class Person:
def __init__(self, name, address):
self.name = name
self.address = address # Агрегация
def display(self):
return f"{self.name} lives at {self.address.display()}"
# Создание объектов Address и Person
address = Address("123 Main St", "New York")
person = Person("John Doe", address)
print(person.display()) # Выведет: John Doe lives at 123 Main St, New York
В этом примере:
✅Класс Address определяет атрибуты улицы и города и метод для отображения адреса.
✅Класс Person включает объект Address в качестве атрибута.
Оба объекта могут существовать независимо. Объект Address может существовать без объекта Person, и наоборот.
Различие между агрегацией и композицией
✅Агрегация: Части могут существовать независимо. Если объект-контейнер удален, включенные объекты могут продолжать существовать.
✅Композиция: Части не могут существовать независимо. Если объект-контейнер удален, все включенные объекты также будут удалены.
Пример агрегации:
class Engine:
def __init__(self, horsepower):
self.horsepower = horsepower
class Car:
def __init__(self, model, engine):
self.model = model
self.engine = engine # Агрегация
engine = Engine(150)
car = Car("Toyota", engine)
# Удаление объекта car не удаляет объект engine
del car
print(engine.horsepower) # Выведет: 150
Пример композиции:
class Engine:
def __init__(self, horsepower):
self.horsepower = horsepower
class Car:
def __init__(self, model, horsepower):
self.model = model
self.engine = Engine(horsepower) # Композиция
car = Car("Toyota", 150)
# Удаление объекта car также удаляет объект engine
del car
# Теперь доступ к engine невозможен
Преимущества
1️⃣Гибкость: Компоненты могут быть легко заменены или изменены без влияния на другие части системы.
2️⃣Повторное использование: Один и тот же объект может быть использован в нескольких агрегатах.
3️⃣Чистая архитектура: Способствует созданию более модульного и поддерживаемого кода.
Агрегация в ООП — это отношение, при котором один объект включает в себя другой, но оба объекта могут существовать независимо. Это полезно для создания гибкой и модульной архитектуры, где компоненты могут быть легко заменены или повторно использованы.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
👩💻 Программирование теперь в телеграм!
Вот обширная база материалов, которая ежедневно обновляется, выбирай своё направление:
Обучение Python с нуля
Обучение Java с нуля
Обучение JavaScript с нуля
Обучение HTML/CSS с нуля
Обучение C/С++ с нуля
Обучение С# с нуля
Обучение SQL/GO/PHP с нуля
Обучение Kotlin/Swift с нуля
⛓ Архив на 1789ГБ: Курсы, книги, шпаргалки, статьи, видео ресурсы — всё собрано в одном месте: @roadmap_ready
12 632
Как работает наследование классов ?
Спросят с вероятностью 3%
Наследование классов позволяет создавать новый класс на основе уже существующего класса. Новый класс, называемый подклассом (или дочерним классом), наследует атрибуты и методы родительского класса (или базового класса), при этом может добавлять новые атрибуты и методы или переопределять существующие.
Как оно работает?
1️⃣Создание базового класса: Определяем базовый класс, содержащий общие атрибуты и методы.
2️⃣Создание подкласса: Определяем подкласс, который наследует базовый класс. Для этого указываем базовый класс в скобках при определении подкласса.
3️⃣Использование подкласса: Создаем экземпляры подкласса, которые будут иметь доступ к атрибутам и методам как подкласса, так и базового класса.
Базовый класс
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
Подклассы
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow!"
Использование
dog = Dog("Buddy")
cat = Cat("Whiskers")
print(dog.speak()) # Выведет: Buddy says Woof!
print(cat.speak()) # Выведет: Whiskers says Meow!
Переопределение методов
Подклассы могут переопределять методы базового класса. В приведенном примере метод speak переопределен в каждом из подклассов.
Вызов методов базового класса
Подклассы могут вызывать методы базового класса с помощью функции super(). Это особенно полезно при переопределении метода __init__.
class Bird(Animal):
def __init__(self, name, can_fly):
super().__init__(name)
self.can_fly = can_fly
def speak(self):
return f"{self.name} says Tweet!"
Множественное наследование
Python поддерживает множественное наследование, что позволяет подклассу наследовать атрибуты и методы от нескольких базовых классов. Однако это может усложнить структуру и логику программы.
class Flyer:
def fly(self):
return "Flying high!"
class Swimmer:
def swim(self):
return "Swimming fast!"
class Duck(Animal, Flyer, Swimmer):
def speak(self):
return f"{self.name} says Quack!"
Полиморфизм
Позволяет использовать объекты разных классов через единый интерфейс. Например, все подклассы Animal могут вызывать метод speak, независимо от того, какой конкретный класс они представляют.
animals = [Dog("Buddy"), Cat("Whiskers"), Duck("Donald")]
for animal in animals:
print(animal.speak())
# Выведет:
# Buddy says Woof!
# Whiskers says Meow!
# Donald says Quack!
Наследование позволяет создавать новые классы на основе существующих, переопределяя или расширяя их функциональность. Подклассы наследуют атрибуты и методы базовых классов, могут переопределять их и добавлять новые. Полиморфизм обеспечивает единый интерфейс для работы с объектами разных классов.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
🤔 Какой метод позволяет классу в Python определять своё поведение в контексте оператора `len()`?
12 632
Оплата зарубежных сервисов стала удобной и доступной. Теперь можно пользоваться любыми сервисами со всего мира, не задумываясь о проблемах с оплатой.
CheatPay помогает оплатить любые зарубежные сервисы российскими картами, а также помогает перевести средства за границу или получить средства из других стран.
Например:
- Потеряли доступ к Zoom, Chat GPT, Airtable, Atlassian, Canva Midjourney, Figma, Notion, Hetzner и к другим программам?
- Простаивают проекты в Adobe Photoshop, Premiere Pro и After Effects, или другие?
Вам помогут!
CheatPay — это надежный, удобный и быстрый сервис оплаты, с множеством положительных отзывов.
📌Возможна оплата на ИП и кредитной картой 💳
Подписывайтесь на канал сервиса CheatPay, чтобы не потерять его.
12 632
Repost from easyoffer
Канал приближается к 20к подписчиков, а здесь так и нет нормального контент плана 😒
Ищу талантливых журналистов, способных писать клевые и авторские посты на тему "Карьера в IT" и все что с этим связано: поиск работы, повышение з/п, разбор кейсов, переезд в другие страны по рабочим визам, аналитика, исследование рынка и т.д.
Важно глубокое понимание IT индустрии, вы должны иметь опыт работы в ней
Если интересно отправьте мне свое резюме @kivaiko
12 632
Чем обычный метод отличается от class method ?
Спросят с вероятностью 3%
Существуют разные виды методов, каждый из которых имеет свои особенности и назначение. Основное различие между обычным методом (методом экземпляра) и методом класса заключается в том, как они работают с объектами и классами.
Обычный метод (метод экземпляра)
✅Определение: Определяется внутри класса и первым параметром всегда принимает
self, который представляет собой экземпляр класса.
✅Доступ: Имеет доступ к атрибутам и другим методам экземпляра класса.
✅Использование: Используется для работы с данными, специфичными для конкретного экземпляра.
Пример:
class MyClass:
def __init__(self, value):
self.value = value
def instance_method(self):
return self.value
# Создание экземпляра и вызов метода
obj = MyClass(10)
print(obj.instance_method()) # Выведет: 10
Метод класса
✅Определение: Определяется с использованием декоратора @classmethod и первым параметром принимает cls, который представляет собой сам класс.
✅Доступ: Имеет доступ к атрибутам и другим методам класса.
✅Использование: Используется для работы с данными, общими для всех экземпляров класса, и для создания альтернативных конструкторов.
Пример:
class MyClass:
class_value = 0
@classmethod
def class_method(cls):
return cls.class_value
# Вызов метода класса
print(MyClass.class_method()) # Выведет: 0
Ключевые различия
1️⃣Первый параметр:
✅Обычный метод: первый параметр self указывает на экземпляр класса.
✅Метод класса: первый параметр cls указывает на сам класс.
2️⃣Доступ:
✅Обычный метод: имеет доступ к атрибутам и методам конкретного экземпляра.
✅Метод класса: имеет доступ к атрибутам и методам класса.
3️⃣Назначение:
✅Обычный метод: используется для работы с данными, специфичными для конкретного экземпляра.
✅Метод класса: используется для работы с данными, общими для всех экземпляров, и для создания альтернативных конструкторов.
Пример сравнения
class MyClass:
class_attribute = 0
def __init__(self, value):
self.value = value
def instance_method(self):
return self.value
@classmethod
def class_method(cls):
return cls.class_attribute
# Создание экземпляра и вызов методов
obj = MyClass(10)
print(obj.instance_method()) # Выведет: 10 (использует атрибут экземпляра)
print(MyClass.class_method()) # Выведет: 0 (использует атрибут класса)
✅Обычный метод использует self и работает с данными конкретного экземпляра класса.
✅Метод класса использует cls и работает с данными, общими для всего класса.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
Почему тебя не зовут на интервью? Исправь это в своем резюме…
Получить приглашение на интервью сейчас сложнее, чем с нуля обучиться разработке. И к сожалению, это не шутка.
Скорее всего только 1-2% работодателей сейчас позовут тебя на интервью. Это статистика, которую мы собирали по 10.000 откликам. Но над этой цифрой можно и нужно работать.
Если правильно оформить свое резюме, и поменять свою стратегию с откликами, то конверсию можно увеличить до 10%. Т.е почти в 10 раз!
Как это сделать?
1. Проверить свое резюме по нашему чек листу, и внести в него то, чего будет не хватать.
2. Поменять свой подход к поиску работы, ведь одними откликами на hh.ru сыт не будешь.
16 июля, в 18:00 по москве, мы вместе с Максом из CodeReview проведем вебинар на тему эффективного поиска работы в 2024 году.
На нем Макс покажет как сейчас нужно искать работу. В прямом эфире.
А также раскроет что именно нужно писать в свое резюме, чтобы оно ПРОДАВАЛО.
Получить чек лист по составлению резюме, а также зарегистрироваться на вебинар можно по этой ссылке.
Регистрируйся сейчас и увидимся 16 июля, в 18:00 по мск.
👉 Зарегистрироваться и получить чек-лист по резюме.
12 632
Для чего нужны class method ?
Спросят с вероятностью 3%
Методы класса определяются с использованием декоратора @classmethod. В отличие от статических методов, методы класса имеют доступ к самому классу через первый параметр, обычно называемый
cls. Это позволяет методам класса изменять состояние класса или вызывать другие методы класса.
Зачем они нужны?
1️⃣Работа с классом, а не с экземпляром: Полезны, когда нужно работать с самим классом, а не с его экземпляром. Это особенно актуально для создания альтернативных конструкторов.
2️⃣Изменение состояния класса: Могут изменять классовые атрибуты, что влияет на все экземпляры класса.
3️⃣Организация кода: Они позволяют организовать код таким образом, чтобы некоторые функции были логически связаны с классом и его состоянием.
Как их использовать?
Метод класса объявляется с использованием декоратора @classmethod и принимает первым параметром cls.
Пример:
class MyClass:
class_attribute = 0
@classmethod
def increment_class_attribute(cls):
cls.class_attribute += 1
# Вызов метода класса
MyClass.increment_class_attribute()
print(MyClass.class_attribute) # Выведет: 1
Почему это важно?
1️⃣Альтернативные конструкторы: Методы класса часто используются для создания объектов класса с различными начальными условиями.
2️⃣Группировка логики: Они позволяют группировать функции, которые работают с классом, внутри самого класса.
3️⃣Поддержка наследования: Методы класса поддерживают наследование, что позволяет создавать методы, которые могут быть переопределены в подклассах.
Рассмотрим пример с альтернативным конструктором:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_birth_year(cls, name, birth_year):
age = 2024 - birth_year
return cls(name, age)
# Создание экземпляров класса Person
person1 = Person("Alice", 30)
person2 = Person.from_birth_year("Bob", 1990)
print(person1.name, person1.age) # Выведет: Alice 30
print(person2.name, person2.age) # Выведет: Bob 34
В этом примере метод класса from_birth_year создает экземпляр Person, вычисляя возраст на основе года рождения.
Методы класса используются для выполнения задач, связанных с классом, а не с его экземплярами. Они полезны для изменения состояния класса и создания альтернативных конструкторов. Методы класса принимают первым параметром cls, представляющий класс.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
Привет! Ты сейчас ищешь работу?
Если да, то у меня для тебя классные новости.
Мы с Максом решили провести вебинар на тему поиска работы и того, как быстрее получить оффер.
Зачем?
Да потому что найти работу просто откликаясь на вакансии теперь практически нереально.
На Junior вакансии откликаются по 1500 кандидатов. 1500 человек, Карл...
Вопрос: Как искать работу в таких условиях?
Ответ: Нужно менять подходы, и использовать новые способы поиска работы.
А вот какие способы, и как искать работу в 2024 году, расскажет мой товарищ - Макс, который помогает разработчикам с трудоустройством.
Он расскажет тебе как ПРАВИЛЬНО откликаться на вакансии, на что смотрят рекрутеры, и как ты должен быть упакован, чтобы получить работу в это непростое время.
🗓 Когда? Во вторник – 16 июля, в 18:00 по мск.
🎁 После регистрации он также обещал прислать: 1) Анализ рынка труда. 2) Разбор кейсов тех, кто сейчас находит работу. 3) Пошаговый план, что нужно делать, чтобы прийти к оферу.
👉 Записаться на вебинар по поиску работы.
12 632
🤔 Как в Python можно гарантировать, что код в блоке будет выполнен независимо от того, возникли ошибки или нет?
12 632
Что известно про init ?
Спросят с вероятностью 3%
Метод init является специальным методом (часто называемым "магическим методом"), который используется для инициализации новых объектов класса. Он выполняется автоматически при создании нового экземпляра класса.
Зачем он нужен ?
Метод init нужен для задания начального состояния объекта. С его помощью можно передать начальные значения атрибутам объекта при его создании.
Как его использовать ?
Определяется внутри класса. Его первым параметром всегда является
self, который представляет собой сам объект. Остальные параметры могут быть любыми и задаются при создании объекта.
Пример:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# Создание экземпляра класса Person
person1 = Person("Alice", 30)
print(person1.name) # Выведет: Alice
print(person1.age) # Выведет: 30
Почему это так важно?
1️⃣Инициализация атрибутов: init позволяет задать начальные значения атрибутам объекта, что делает объект полнофункциональным сразу после создания.
2️⃣Гибкость: Можно задавать различные параметры при создании объекта, что позволяет создавать объекты с разными начальными состояниями.
3️⃣Чистота кода: init делает код более читаемым и понятным, так как инициализация объектов происходит в одном месте.
Рассмотрим более сложный пример:
class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year
def display_info(self):
print(f"{self.brand} {self.model}, {self.year}")
# Создание экземпляров класса Car
car1 = Car("Toyota", "Corolla", 2020)
car2 = Car("Honda", "Civic", 2019)
car1.display_info() # Выведет: Toyota Corolla, 2020
car2.display_info() # Выведет: Honda Civic, 2019
В этом примере метод init задает марку, модель и год выпуска автомобиля. Метод display_info выводит информацию об автомобиле.
Метод init используется для инициализации новых объектов класса. Он позволяет задавать начальные значения атрибутов, делая объекты готовыми к использованию сразу после их создания.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
Как джуну без опыта составить себе крутое резюме?
Просто скачай наш гайд с 5 примерами реальных резюмешек ребят, которые недавно нашли работу.
В этом гайде рассказали как:
1. Оформить свой опыт, даже если его нет.
2. Добавили 5 крутых примеров настоящих резюме junior разработчиков без опыта, которые нашли работу.
А писала этот гайд команда, которая трудоустроила уже больше 150 джунов!
Меняем его на подписку на канал 😊
👉 Скачать можно бесплатно по этой ссылочке.
12 632
🤔 Что такое list comprehension в Python и для чего оно используется?
12 632
Как реализовать класс, объект которого может работать в менеджере контекста ?
Спросят с вероятностью 3%
Для того чтобы класс мог использоваться в менеджере контекста (в конструкции
with), он должен реализовать методы __enter__ иак реализо Эти методы управляют инициализацией и завершением контекста, соответственно.
Рассмотрим пример класса, который открывает и закрывает файл:
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
if self.file:
self.file.close()
# Использование класса FileManager в конструкции with
with FileManager('example.txt', 'w') as file:
file.write('Hello, world!')
# После выхода из блока with файл будет закрыт автоматически
Объяснение
1️⃣Конструкторelf.file.cl
✅Принимает имя файла и режим его открытия.
✅Инициализирует атрибут file значением None.
2️⃣Метод enter:
✅Открывает файл и сохраняет его объект в атрибут file.
✅Возвращает объект файла, чтобы он мог быть использован в блоке with.
3️⃣Метод exit:
✅Закрывает файл, если он был успешно открыт.
✅Принимает три аргумента (exc_type, exc_value, traceback), которые используются для обработки исключений. Если в блоке with возникло исключение, эти аргументы содержат информацию о нем.
Обработка исключений
Метод exit может обрабатывать исключения, возникшие в блоке with. Если метод возвращает True, исключение подавляется и не передается дальше. Если метод возвращает False (или ничего не возвращает), исключение передается дальше.
Пример с обработкой исключений
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
if self.file:
self.file.close()
if exc_type is not None:
print(f"An exception occurred: {exc_value}")
return True # Подавляет исключение
# Использование класса FileManager с исключением
try:
with FileManager('example.txt', 'w') as file:
file.write('Hello, world!')
raise ValueError("An intentional error")
except ValueError:
print("ValueError caught")
# После выхода из блока with файл будет закрыт автоматически
Объяснение:
✅Если в блоке with возникает исключение, метод exit обрабатывает его, выводит сообщение и возвращает True, что подавляет исключение и не передает его дальше.
✅Блок try позволяет убедиться, что исключение обработано правильно.
Чтобы класс мог работать в менеджере контекста (в конструкции with), необходимо реализовать методыает True, чиак реализо Методализовать кинициализирует ресурс и возвращает его, чтобы он мог быть использован в блоке with. Методероятностьосвобождает ресурс и может обрабатывать исключения, возникающие в блоке with.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
🤔 Какая библиотека Python обычно используется для работы с векторными и матричными операциями?
12 632
Как сделать класс, который будет поддерживать протокол итератора ?
Спросят с вероятностью 3%
Чтобы сделать класс, который поддерживает протокол итератора, нужно реализовать два метода: __iter__() и __next__(). Метод
__iter__() должен возвращать сам итератор (обычно это сам объект), а метод __next__() должен возвращать следующий элемент последовательности или выбрасывать исключение StopIteration, когда элементы заканчиваются.
Вот пример класса, который реализует протокол итератора:
class MyRange:
def __init__(self, start, end):
self.start = start
self.end = end
self.current = start
def __iter__(self):
return self
def __next__(self):
if self.current < self.end:
current = self.current
self.current += 1
return current
else:
raise StopIteration
# Использование класса MyRange
my_range = MyRange(1, 5)
for number in my_range:
print(number) # Выведет: 1 2 3 4
Объяснение
1️⃣Конструктор __init__:
✅Инициализирует начальное значение (start), конечное значение (end) и текущее значение (current), которое будет изменяться при итерации.
2️⃣Метод iter:
✅Возвращает сам итератор, то есть self.
3️⃣Метод next:
✅Проверяет, достигло ли текущее значение (self.current) конечного значения (self.end).
✅Если текущее значение меньше конечного, метод увеличивает текущее значение на 1 и возвращает предыдущее текущее значение.
✅Если текущее значение больше или равно конечному, выбрасывается исключение StopIteration.
Можно также создать более сложный итератор, например, для перебора элементов списка.
class MyListIterator:
def init(self, my_list):
self.my_list = my_list
self.index = 0
def iter(self):
return self
def next():
if self.index < len(self.my_list):
result = self.my_list[self.index]
self.index += 1
return result
else:
raise StopIteration
# Использование класса MyListIterator
my_list = [10, 20, 30, 40]
my_iterator = MyListIterator(my_list)
for item in my_iterator:
print(item) # Выведет: 10 20 30 40
Обработка итераций с вложенными циклами
Иногда может потребоваться использовать итератор в контексте вложенных циклов или других структур. В этом случае итератор должен поддерживать повторное использование.
class ResettableRange:
def __init__(self, start, end):
self.start = start
self.end = end
self.current = start
def __iter__(self):
self.current = self.start # Сброс текущего значения при начале новой итерации
return self
def __next__(self):
if self.current < self.end:
current = self.current
self.current += 1
return current
else:
raise StopIteration
# Использование класса ResettableRange
resettable_range = ResettableRange(1, 5)
# Первый цикл
for number in resettable_range:
print(number) # Выведет: 1 2 3 4
# Второй цикл
for number in resettable_range:
print(number) # Снова выведет: 1 2 3 4
Чтобы создать класс, поддерживающий протокол итератора, нужно реализовать методы iter() и next(). Метод iter() возвращает сам итератор, а метод next() возвращает следующий элемент или выбрасывает StopIteration, когда элементы заканчиваются.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых12 632
🤔 Какой механизм в Python позволяет управлять доступом к атрибутам объекта извне?
