Хорошо. Давайте пример возьмем более корректный.
Необходимо написать конвертер фотографий.
Как это можно сделать:
Вариант 1.
- Написать класс, который будет самостоятельно реализовывать хранилище объектов открытых фотографий или путей к фотографиям + дописать методы, которые будут с этим хранилищем работать (добавить фото в хранилище, достать фото из хранилища, удалить и т.п.);
Вариант 2.
Написать два класса. Первый из них мы формируем сами. Экземпляры этого класса являются объектами открытых фотографий или путей к фотографиям с методами работы с фотографиями (конвертация, изменение размера и т.п.). Второй класс, который был унаследован от списка хранит ссылки на экземпляры первого.
Так как второй класс изначально унаследован от списка, соответственно он обладает всеми его методам.
Неужели действие метода pop этого класса может вызвать какие-то сомнения. Или метод del, или метод append или метод len… При этом мы получаем “на шару” все механизмы списка. Единственное, что нужно не забыть, так это написать в первом классе метод __str__ и __repr__, чтобы при
Выводилось корректное отображение. Ну например такое:
["<open file: 1.jpeg>", "<open file: 2.jpeg>", "<open file: 3.jpeg>"]
А
print instance_two_class[0]
В этом случае может отобразить
name: "1.jpg"
path: "c:\foto"
size: [200, 200]
....
А забыл написать. Желательно еще во втором варианте дописать несколько своих методов для пакетной обработки…
P.S. Хотя здесь бы еще не помешал третий класс именно для управлением пакетной обработкой :)