Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m320_2024:learningunits:lu03:identitaet [2024/08/13 07:23] – angelegt msuter | modul:m320_2024:learningunits:lu03:identitaet [2024/08/13 08:03] (aktuell) – msuter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
- | In der objektorientierten Programmierung muss klar unterschieden werden, ob zwei Objekte | + | In der objektorientierten Programmierung muss klar unterschieden werden, ob zwei Objekte |
+ | * gleichartig, | ||
* gleich oder | * gleich oder | ||
* identisch | * identisch | ||
Zeile 8: | Zeile 9: | ||
- | ===== Gleichheit | + | ===== Gleichartig |
- | Objektreferenzen | + | Objekte |
- | Die Gleichheit | + | Die Gleichartigkeit |
Unter der Annahme, dass eine Klasse '' | Unter der Annahme, dass eine Klasse '' | ||
<code python> | <code python> | ||
Zeile 25: | Zeile 26: | ||
</ | </ | ||
Da '' | Da '' | ||
+ | |||
+ | ===== Gleichheit ===== | ||
+ | Zwei Objekte sind gleich, wenn sie | ||
+ | * vom gleichen Typ (Klasse) **und** | ||
+ | * alle Attribute die gleichen Werte enthalten. | ||
+ | |||
+ | ==== __eq__ ==== | ||
+ | |||
+ | Um zwei Objekte auf Gleichheit zu prüfen, muss die Klasse die Methode '' | ||
+ | In dieser Methode codieren wir die Logik um die Gleichheit zweiter Objekte zu prüfen. | ||
+ | Hat die Klasse keine Methode '' | ||
+ | |||
+ | <code python> | ||
+ | class Point: | ||
+ | def __init__(self, | ||
+ | self._xposition = xposition | ||
+ | self._yposition = yposition | ||
+ | | ||
+ | def __eq__(self, | ||
+ | if not isinstance(other, | ||
+ | return NotImplemented | ||
+ | if self._xposition == other.xposition and self._yposition == other.yposition: | ||
+ | return true | ||
+ | return false | ||
+ | | ||
+ | if __name__ == " | ||
+ | obj1 = Point(10, | ||
+ | obj2 = Point(5,5) | ||
+ | obj3 = Point(10, | ||
+ | if ob1 == obj2: | ||
+ | # bei Identität von obj1 und obj2 wird dieser Code ausgeführt | ||
+ | else: | ||
+ | print(' | ||
+ | #-- | ||
+ | if obj1 == obj3: | ||
+ | print(' | ||
+ | else: | ||
+ | # sind obj1 und obj3 nicht gleich, wird dieser Code ausgeführt | ||
+ | </ | ||
+ | |||
+ | In diesem Beispiel gelten '' | ||
===== Identität ===== | ===== Identität ===== | ||
Zeile 31: | Zeile 73: | ||
<code python> | <code python> | ||
+ | if __name__ == " | ||
+ | obj1 = Point(10, | ||
+ | obj2 = Point(5,5) | ||
+ | obj3 = obj1 | ||
if ob1 is obj2: | if ob1 is obj2: | ||
# bei Identität von obj1 und obj2 wird dieser Code ausgeführt | # bei Identität von obj1 und obj2 wird dieser Code ausgeführt |