Fortgeschrittene Verwendung
In diesem Schritt werden wir einige fortgeschrittene Anwendungen des is
-Operators untersuchen.
- Definieren Sie eine Klasse
MyClass
mit einem Attribut value
.
class MyClass:
def __init__(self, value):
self.value = value
- Definieren Sie zwei Instanzen der Klasse
MyClass
, obj1
und obj2
, mit dem gleichen value
.
obj1 = MyClass("Hello")
obj2 = MyClass("Hello")
- Geben Sie die Speicheradresse von
obj1.value
und obj2.value
mithilfe der id()
-Funktion aus.
print(id(obj1.value))
print(id(obj2.value))
- Verwenden Sie den
is
-Operator, um zu überprüfen, ob obj1.value
und obj2.value
auf dasselbe Objekt verweisen.
print(obj1.value is obj2.value)
Die Ausgabe des obigen Codes sollte True
sein, da das Attribut value
ein unveränderliches Objekt ist und beide Instanzen dasselbe Objekt im Speicher teilen.
- Definieren Sie jetzt zwei Instanzen der Klasse
MyClass
, obj3
und obj4
, mit einem veränderlichen Objekt als ihrem value
.
obj3 = MyClass([])
obj4 = MyClass([])
- Geben Sie die Speicheradresse von
obj3.value
und obj4.value
mithilfe der id()
-Funktion aus.
print(id(obj3.value))
print(id(obj4.value))
- Verwenden Sie den
is
-Operator, um zu überprüfen, ob obj3.value
und obj4.value
auf dasselbe Objekt verweisen.
print(obj3.value is obj4.value)
Die Ausgabe des obigen Codes sollte False
sein, da das Attribut value
ein veränderliches Objekt ist und beide Instanzen nicht dasselbe Objekt im Speicher teilen.