- zwei Klassen A und B
- B erzeugt eine Instanz von A
- B ruft in der A-Instanz eine Methode auf und verarbeitet dort drin quasi "lokal" einen Wert (hier: `print spam`)
Nun benötige ich aber den Wert `spam` nun auch in der B-Instanz. Also Idee: Klassen-Methode überschreiben. Den Return-Wert der besagten A-Instanz-Methode darf ich aber auch nicht ändern (hier: `return True`).
Wie kann ich aus der Instanz `b_` heraus auf den Wert `spam` zugreifen? Ich möchte also das Objekt bestimmen, welches "mich" (aus Sicht der Methode) aufgerufen hat.
Code: Alles auswählen
class ClassA:
def method_x(self):
print "method_x()"
self.method_y("eggs")
def method_y(self, spam):
print "method_y()"
print spam
return True
class ClassB:
def method_z(self):
print "method_z()"
a = ClassA()
a.method_x()
b = ClassB()
b.method_z()
print 79*"-"
# overwrite `method_y`
def new_method_y(self, spam):
print "new_method_y()"
# make `spam` available in `ClassB` instance (`b_`)
"""
self.__myCallingInstance__.spam = spam
"""
return True
ClassA.method_y = new_method_y
b_ = ClassB()
b_.method_z()
# I need this
"""
print b_.spam
"""