Одинаковые метки не подразумевают побайтные идентичные объекты, и байтовые идентичные объекты не обязательно равны.
Вы можете подумать, что легко сделать байт-байтовые идентичные объекты автоматически равными, но это сталкивается с множеством проблем. Например, рассмотрим следующее:
class Foo(object):
__slots__ = ['x']
x = Foo()
y = Foo()
x.x = y.x = Foo()
Помимо метаданных GC, x
и y
, вероятно, идентичны побайтно. Должны ли x
и y
автоматически совпадать? x
единственный, чей атрибут x
указывает на себя; это кажется достаточно большой разницей, что они не должны автоматически равняться.
Это только одна из проблем при попытке сделать то, что вы хотите по умолчанию. Выяснилось, что наименее запутанным по умолчанию является ==
, работающий по идентичности; если в игру не вступит переопределение __eq__
, объекты будут равны только себе.