Вы, кажется, привыкли к языку с детерминированным уничтожением объектов и специальными методами для его уничтожения.Python не работает таким образом.В Python нет деструкторов, и даже если бы он имел деструкторы, нет гарантии, что del myData.contA
сделает объект-контейнер пригодным для уничтожения, не говоря уже о его уничтожении.
Вероятно, самый простой способ - это просто определитьremove_container
распараллеливание вашего add_container
:
def remove_container(self, name):
self._containers.remove(name)
delattr(self, name)
Если вы действительно хотите, чтобы синтаксис этой операции был del myData.contA
, то подключитесь к удалению атрибута, реализовав __delattr__
для Data
:
def __delattr__(self, name):
self._containers.remove(name)
super().__delattr__(name)