Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| modul:archiv:m320:learningunits:lu02:loesungen:lu2-aufgabe_2 [2026/08/30 14:06] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | modul:archiv:m320:learningunits:lu02:loesungen:lu2-aufgabe_2 [2026/08/30 14:06] (aktuell) – ↷ Seite von modul:m320:learningunits:lu02:loesungen:lu2-aufgabe_2 nach modul:archiv:m320:learningunits:lu02:loesungen:lu2-aufgabe_2 verschoben msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ==== Lösung 2 - Gleichheit und Identität ==== | ||
| + | <code python> | ||
| + | # In der Theorie haben Sie gelernt, wie mit der Methode isinstance die | ||
| + | # Zugehörigkeit eines Objekts zu einer Klasse festgestellt werden kann | ||
| + | # und wie mit dem Operator is geprüft wird, ob Referenzen identisch sind. | ||
| + | # Der folgende Code geht noch ein bisschen weiter. Sie sollen den Code | ||
| + | # studieren und sein Verhalten erklären. Dazu kann es notwendig sein, | ||
| + | # dass Sie sich über passende Suchbegriffe im Internet " | ||
| + | class ObjectIdentity: | ||
| + | def __init__(self, | ||
| + | """ | ||
| + | Erzeugt ein Objekt mit dem Wert des Parameters value | ||
| + | :param value: ein beliebiger Text | ||
| + | """ | ||
| + | self.text = value | ||
| + | |||
| + | @property | ||
| + | def text(self): | ||
| + | """ | ||
| + | Liefert den Wert des Attributs | ||
| + | :return: aktueller Text | ||
| + | """ | ||
| + | return self._text | ||
| + | |||
| + | @text.setter | ||
| + | def text(self, value): | ||
| + | """ | ||
| + | Schreibt den Wert von value ins Attribut. | ||
| + | :param value: ein beliebiger Text | ||
| + | """ | ||
| + | self._text = value | ||
| + | |||
| + | def __eq__(self, | ||
| + | ''' | ||
| + | Vergleicht zwei Objekte auf deren Inhalt, so dass sie mit dem | ||
| + | ==-Operator verglichen werden können. | ||
| + | Diese Methode ist implizit für jedes Objekt verfügbar und kann überschrieben | ||
| + | werden, um den gewünschten Effekt des Vergleichs zu bekommen. | ||
| + | |||
| + | Wenn Ihnen nicht klar ist, wie man das macht, suchen Sie im Internet nach Lösungen, | ||
| + | z.B. diese hier -> https:// | ||
| + | ''' | ||
| + | if isinstance(other, | ||
| + | return self.text == other.text | ||
| + | elif isinstance(other, | ||
| + | return self.text == other | ||
| + | return False | ||
| + | |||
| + | |||
| + | if __name__ == " | ||
| + | # erzeugen Sie hier 2 Objekt obj1 und obj2 der Klasse ObjectIdentity. | ||
| + | # do it | ||
| + | obj1 = ObjectIdentity(' | ||
| + | obj2 = ObjectIdentity(' | ||
| + | |||
| + | ## | ||
| + | # prüfen der Klassenzugehörigkeit von obj1 zur Klasse ObjectIdentity | ||
| + | # Geben Sie je nach Testergebnis einen passenden Text aus. | ||
| + | # do it | ||
| + | if isinstance(obj1, | ||
| + | print(' | ||
| + | else: | ||
| + | print(' | ||
| + | |||
| + | |||
| + | ## | ||
| + | # prüfen Sie, ob die beiden Objekte obj1 und obj2 identisch sind. | ||
| + | # Geben Sie je nacht Testergebnis einen passenden Text aus. | ||
| + | # do it | ||
| + | if obj1 is obj2: | ||
| + | print(' | ||
| + | else: | ||
| + | print(' | ||
| + | |||
| + | ## | ||
| + | # prüfen Sie hier den Inhalt (das Attribut) der beiden Objekte auf Gleichheit. | ||
| + | # Beachten Sie dazu auch die Hinweise in der Methode __eq__ | ||
| + | # do it | ||
| + | if obj1 == obj2: | ||
| + | print(' | ||
| + | else: | ||
| + | print(' | ||
| + | |||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | [[https:// | ||