У меня есть структура класса, в которой экземпляр одного класса должен содержать ссылку на экземпляр другого класса.Прочитав некоторые другие сообщения , лучший (самый безопасный) способ сделать это - использовать слабый реф.Это выглядело бы так:
class ClassA:
def __init__(self):
self.my_b = ClassB(self)
self.some_prop = 1
class ClassB:
def __init__(self, some_a):
self.some_a = weakref.ref(some_a)
Вопрос, который у меня возникает, заключается в том, что для доступа к some_prop
через экземпляр ClassB вам потребуется вызвать ссылку, которая сделает объект доступным, согласно документации :
self.some_a().some_prop
Однако, мой вопрос заключается в том, должен ли каждый раз вызываться ссылка.Разве мы не можем просто позвонить слабому в init?Т.е.
self.some_a = weakref.ref(some_a)()
и затем получить к нему доступ (более естественно), как
self.some_a.some_prop
У меня такое ощущение, что первый вариант предпочтительнее, но я пытаюсь понять, почему.В моем случае нет никакого способа, которым указанный объект будет удален раньше другого.