Я использую вложенный класс для целей бухгалтерского учета в Python 3. Структура класса (очень упрощенная) выглядит примерно так:
class BookKeeping:
class ItemA:
count = 0
item_list = []
@classmethod
def add(cls, item_a):
cls.count += 1
cls.item_list.append(item_a)
class ItemB:
count = 0
item_dict = {}
...
Этот класс позволяет отслеживать и получать доступ к некоторым "глобальным" свойствам системы, которую я моделирую. Наличие вложенных классов обеспечивает свободное пространство имен. Например, в любом модуле я могу ... import BookKeeping as BK
и проверить, сколько ItemB
объектов (BK.ItemB.count
).
В какой-то момент в моей программе я хотел бы "сбросить" все атрибуты класса, т. Е. Я бы хотел снова установить BookKeeping.ItemA.count
в 0 и очистить списки и словари и т. Д.
Очевидно, я мог бы добавить метод класса верхнего уровня, например BookKeeping.reset()
, который сбрасывает все значения «вручную», например:
class BookKeeping:
@classmethod
def reset(cls):
cls.ItemA.count = 0
cls.ItemA.item_list = []
cls.ItemB.count = 0
...
Однако, мне кажется, что этот подход подвержен ошибкам и включает в себя «обслуживание» этого класса (я мог бы забыть сбросить некоторые атрибуты). Обратите внимание, что мой реальный класс сложнее, чем пример, который я привел.
Какой самый простой способ вернуть все атрибуты класса в исходное состояние во время выполнения?