Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpClSt 101 of 174 menu
◀ ▶

Запись элемента коллекции в ООП в Python

Запись в элемент по индексу перехватывает метод __setitem__. Python передает индекс и новое значение, а метод кладет его во внутренний список.

Давайте добавим __setitem__ к классу с числами:

class Numbers: def __init__(self): self.__data = [1, 2, 3] def __getitem__(self, index): return self.__data[index] def __setitem__(self, index, value): self.__data[index] = value

Создадим объект, изменим элемент и проверим результат:

nums = Numbers() nums[0] = 10 print(nums[0]) # выведет 10

Перед записью можно выполнять проверки. К примеру, разрешим только положительные числа:

class Numbers: def __init__(self): self.__data = [1, 2, 3] def __setitem__(self, index, value): if value > 0: self.__data[index] = value else: print('value is incorrect')

Проверим корректную и некорректную запись:

nums = Numbers() nums[1] = 5 nums[1] = -1 # ошибка

Сделаем запись по индексу для списка сотрудников:

class Employee: def __init__(self, name): self.name = name class Workers: def __init__(self): self.__data = [ Employee('john'), Employee('smit'), ] def __setitem__(self, index, employee): self.__data[index] = employee

Заменим первого сотрудника и выведем имя:

workers = Workers() workers[0] = Employee('eric') print(workers[0].name) # выведет 'eric'

Добавьте __setitem__ в класс Numbers.

В __setitem__ класса Numbers сделайте проверку: число должно быть больше 0.

Сделайте __setitem__ в классе Workers для замены сотрудника по индексу.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить