Christian Seiler: Vergleich zweier gleicher Arrays gibt false zurück

Beitrag lesen

Hallo Mathias,

* [1, 2, 3] == [1, 2, 3]

Was würde Python bei einem Vergleich zweier komplexerer Objekte machen, also wie in JavaScript das besagte window == window?

Kommt darauf an[tm].

Wenn die Klasse spezielle Methoden (__eq__, __cmp__) implementiert, dann werden diese Methoden aufgerufen, um Vergleiche durchzuführen. Wenn nicht, dann wird nur geprüft, ob die Variablen Referenzen auf das gleiche Objekt sind.

Beispiel:

Klasse mit Vergleichsfunktion:

class Bar:  
  def __init__ (self, a):  
    self.a = a  
  
  def __eq__ (self, other):  
    return self.a == other.a

Klasse ohne Vergleichsfunktion:

class Foo:  
  def __init__ (self, a):  
    self.a = a

Ausgabe (Beispiel):

t1 = Foo (1)
t2 = t1
t3 = Foo (1)
t1 == t2

True

t1 == t3

False

s1 = Bar(1)
s2 = s1
s3 = Bar(1)
s1 == s2

True

s1 == s3

True

Viele Grüße,
Christian