Я уже некоторое время пытаюсь найти ответ на этот вопрос, и, хотя я нахожу много информации о циклических ссылках и проверке объектов на равенство, я не могу найти точный ответ, который ищу.
Для ясности я работаю в Python 3.6.8.
Теперь у меня есть различные объекты, между которыми я хотел бы создать связи. Они не являются родителями или детьми друг друга, поэтому я не хочу использовать наследование, но я бы хотел связать эти объекты с помощью атрибутов. Я хотел бы иметь возможность иметь эту ссылку в обоих направлениях, чтобы я мог добраться до другого объекта из любого из объектов. В результате получается что-то вроде этого:
class A():
def __init__(self, b):
self.b = b
class B():
def __init__(self, a):
self.a = a
Таким образом, из экземпляра класса AI можно указать, к какому экземпляру класса B он относится, и наоборот.
Однако, Я считаю, что это создает некую циркулярную ссылку.
Кроме того, я могу столкнуться с некоторыми проблемами при тестировании этих классов (unittest, pytest, et c.). В моем тесте у меня был бы объект класса B, который я хотел бы сравнить с объектом класса B, который возвращает мой код. Тем не менее, я сталкиваюсь с ошибками рекурсии при попытке сравнить эти объекты.
Итак, у меня есть следующие вопросы:
- Является ли этот тип "циклической ссылки" проблемой? Это то, что я должен избегать? Если да, то какие "лучшие" (больше pythoni c) способы могли бы быть, чтобы гарантировать, что я все еще могу связать эти объекты ?? быть лучшим способом, которым я могу проверить, равны ли разные объекты? Заметьте, я не хочу видеть, равны ли идентификаторы объектов, просто если содержимое объектов равно.
Заранее спасибо за все время.