Удаление элемента коллекции в ООП в Python
Команда del с индексом в скобках
вызывает метод __delitem__.
Внутри метода элемент убирают из
внутреннего списка.
Давайте добавим __delitem__ к классу
с числами:
class Numbers:
def __init__(self):
self.__data = [1, 2, 3]
def __len__(self):
return len(self.__data)
def __delitem__(self, index):
del self.__data[index]
Создадим объект, удалим элемент и проверим длину:
nums = Numbers()
del nums[0]
print(len(nums)) # выведет 2
После удаления индексы сдвигаются, как у обычного списка:
print(nums[0]) # выведет 2
Сделаем удаление для коллекции сотрудников:
class Employee:
def __init__(self, name):
self.name = name
class Workers:
def __init__(self):
self.__data = [
Employee('john'),
Employee('smit'),
Employee('eric'),
]
def __len__(self):
return len(self.__data)
def __delitem__(self, index):
del self.__data[index]
Удалим среднего сотрудника и выведем имя первого:
workers = Workers()
del workers[1]
print(workers[0].name) # выведет 'john'
print(len(workers)) # выведет 2
Добавьте __delitem__ в класс
Numbers.
Сделайте __delitem__ в классе
Workers.
Удалите первого сотрудника из объекта
Workers и выведите оставшуюся
длину коллекции.