Heim > Artikel > Backend-Entwicklung > Wie definiere ich den Gleichheitsvergleich für Objektinstanzen in Python?
So vergleichen Sie Objektinstanzen auf Gleichheit basierend auf Attributen
Python vergleicht Objektinstanzen nativ anhand von Referenzen, d. h. selbst wenn zwei Objekte identisch sind Attributwerte, werden sie als ungleich betrachtet. Dieses Verhalten kann problematisch sein, wenn Sie Gleichheitsprüfungen basierend auf Objektattributen durchführen müssen.
Eine Lösung für dieses Problem besteht darin, die Methode __eq__ in Ihrer Klasse zu implementieren. Mit dieser Methode können Sie die Bedingungen definieren, unter denen zwei Instanzen Ihrer Klasse als gleich betrachtet werden.
Um __eq__ zu implementieren, befolgen Sie diese Schritte:
Hier ist beispielsweise eine Implementierung von __eq__ für die MyClass-Klasse:
<code class="python">class MyClass: def __init__(self, foo, bar): self.foo = foo self.bar = bar def __eq__(self, other): if not isinstance(other, MyClass): return NotImplemented return self.foo == other.foo and self.bar == other.bar</code>
Mit dieser Implementierung werden Instanzen von MyClass können anhand ihrer foo- und bar-Attribute auf Gleichheit verglichen werden:
<code class="python">x = MyClass('foo', 'bar') y = MyClass('foo', 'bar') print(x == y) # True</code>
Beachten Sie, dass durch die Implementierung von __eq__ Instanzen Ihrer Klasse nicht gehasht werden können. Wenn Sie Instanzen in Mengen oder Wörterbüchern speichern müssen, sollten Sie auch die Methode __hash__ implementieren, um eine Hash-Funktion für Ihre Objekte zu definieren.
Das obige ist der detaillierte Inhalt vonWie definiere ich den Gleichheitsvergleich für Objektinstanzen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!