У меня возникли проблемы с сравнением сложных объектов в Python, в тех случаях, когда кто-то делает, эффективно object_a = object_b
, а затем if object_a == object_b:
. Моим обычным решением было сделать адрес объекта в строку, которая всегда должна быть уникальной.Уверенный огонь, простой способ сравнить два сложных объекта в Python?
Ниже приведен пример, в котором он работает в обоих направлениях, сравнивая объекты и сравнивая значения str(object_a)
и str(object_b)
.
>>> class Thing:
>>> def __init__(self):
>>> self.x = 0
>>> return
>>>
>>> a = Thing()
>>> b = a
>>> b == a
True
>>> a_pointer = str(a)
>>> b_pointer = str(b)
>>> a
<__main__.Thing instance at 0x16c0098>
>>> b
<__main__.Thing instance at 0x16c0098>
>>> a == b
True
Есть ли лучший способ? Есть ли случай, когда это может не сработать?
Не могли бы вы рассказать о том, что проблема, давая пример вывода, который не то, что вы ожидали? –