Objektvergleich
In diesem Abschnitt werden wir die Magic-Methoden untersuchen, die in Python zum Vergleich von Objekten verwendet werden. Diese Methoden ermöglichen es Ihnen, benutzerdefiniertes Vergleichsverhalten für Objekte Ihrer Klasse zu definieren.
__eq__
Die __eq__
-Methode wird verwendet, um zu bestimmen, ob zwei Objekte gleich sind. Sie wird vom ==
-Operator aufgerufen.
#... (vorheriger Code in person.py)
def __eq__(self, other: "Person") -> bool:
"""
Vergleicht zwei Person-Objekte auf Gleichheit.
:param other: Das andere Person-Objekt, mit dem verglichen werden soll.
:return: True, wenn beide Objekte denselben Namen und das gleiche Alter haben, andernfalls False.
"""
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
__ne__
Die __ne__
-Methode wird verwendet, um zu bestimmen, ob zwei Objekte nicht gleich sind. Sie wird vom !=
-Operator aufgerufen.
#... (vorheriger Code in person.py)
def __ne__(self, other: "Person") -> bool:
"""
Vergleicht zwei Person-Objekte auf Ungleichheit.
:param other: Das andere Person-Objekt, mit dem verglichen werden soll.
:return: True, wenn die Objekte unterschiedliche Namen oder Alters haben, andernfalls False.
"""
return not self.__eq__(other)
__lt__
Die __lt__
-Methode wird verwendet, um zu bestimmen, ob ein Objekt kleiner als ein anderes ist. Sie wird vom <
-Operator aufgerufen.
#... (vorheriger Code in person.py)
def __lt__(self, other: "Person") -> bool:
"""
Vergleicht zwei Person-Objekte, um zu sehen, ob eines kleiner als das andere ist, basierend auf dem Alter.
:param other: Das andere Person-Objekt, mit dem verglichen werden soll.
:return: True, wenn das Alter des aktuellen Objekts kleiner als das Alter des anderen Objekts ist, andernfalls False.
"""
if isinstance(other, Person):
return self.age < other.age
return NotImplemented
__le__
Die __le__
-Methode wird verwendet, um zu bestimmen, ob ein Objekt kleiner als oder gleich einem anderen ist. Sie wird vom <=
-Operator aufgerufen.
#... (vorheriger Code in person.py)
def __le__(self, other: "Person") -> bool:
"""
Vergleicht zwei Person-Objekte, um zu sehen, ob eines kleiner als oder gleich dem anderen ist, basierend auf dem Alter.
:param other: Das andere Person-Objekt, mit dem verglichen werden soll.
:return: True, wenn das Alter des aktuellen Objekts kleiner als oder gleich dem Alter des anderen Objekts ist, andernfalls False.
"""
if isinstance(other, Person):
return self.age <= other.age
return NotImplemented
__gt__
Die __gt__
-Methode wird verwendet, um zu bestimmen, ob ein Objekt größer als ein anderes ist. Sie wird vom >
-Operator aufgerufen.
#... (vorheriger Code in person.py)
def __gt__(self, other: "Person") -> bool:
"""
Vergleicht zwei Person-Objekte, um zu sehen, ob eines größer als das andere ist, basierend auf dem Alter.
:param other: Das andere Person-Objekt, mit dem verglichen werden soll.
:return: True, wenn das Alter des aktuellen Objekts größer als das Alter des anderen Objekts ist, andernfalls False.
"""
if isinstance(other, Person):
return self.age > other.age
return NotImplemented
__ge__
Die __ge__
-Methode wird verwendet, um zu bestimmen, ob ein Objekt größer als oder gleich einem anderen ist. Sie wird vom >=
-Operator aufgerufen.
#... (vorheriger Code in person.py)
def __ge__(self, other: "Person") -> bool:
"""
Vergleicht zwei Person-Objekte, um zu sehen, ob eines größer als oder gleich dem anderen ist, basierend auf dem Alter.
:param other: Das andere Person-Objekt, mit dem verglichen werden soll.
:return: True, wenn das Alter des aktuellen Objekts größer als oder gleich dem Alter des anderen Objekts ist, andernfalls False.
"""
if isinstance(other, Person):
return self.age >= other.age
return NotImplemented
Beispiel: Verwenden der Magic-Methoden für den Objektvergleich
Jetzt, da wir die Magic-Methoden für den Objektvergleich für unsere Person
-Klasse definiert haben, schauen wir uns an, wie sie in compare_example.py
funktionieren:
from person import Person
## Erstellen von zwei Person-Objekten
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)
## Verwenden der __eq__- und __ne__-Methoden
print(p1 == p2) ## Ausgabe: False
print(p1!= p2) ## Ausgabe: True
## Verwenden der __lt__-, __le__-, __gt__- und __ge__-Methoden
print(p1 < p2) ## Ausgabe: True
print(p1 <= p2) ## Ausgabe: True
print(p1 > p2) ## Ausgabe: False
print(p1 >= p2) ## Ausgabe: False
Geben Sie dann den folgenden Befehl in der Konsole ein, um das Skript auszuführen.
python compare_example.py