У меня есть два класса A и B, и я хочу поделиться переменной экземпляра от A до B и убедиться, что, когда я вызываю del для переменной в A, B больше не имеет доступа к ней, и переменная становится правильно Исключен.
Я имел в виду 4 различных метода для достижения этой цели.
- Наследование - я решил против этого, потому что B не является экземпляром A, и у меня возникают проблемы при вызове super (B оказывается производным классом некоторой другой ABC). B также не имеет смысла для других переменных и методов, определенных в A.
- Вложенные классы - я пробовал это, но очевидно, что вложенные классы Python не ведут себя так, как это делает C ++.
- Передача переменных - Первоначально это работало, как и ожидалось, но когда я вызвал del для переменной в A, B все еще имел доступ к ней, потому что (я полагаю) она все еще имела ссылку на переменную
- Глобальные переменные - я слышал, что это плохая практика
Я знаю, что, вероятно, есть решение с weakref
, но мне было интересно, есть ли другое решение, связанное с дизайном программы
class A():
def __init__(self):
self.var = myVar
def func(self):
return B(self.myVar2)
def stop(self):
del self.myVar
class B():
def __init__(self, myVar)
self.myVar2 = myVar
# Other methods ...
Выше приведен пример передачи переменной. Когда я вызываю stop для экземпляра A, переменная не удаляется должным образом.