Variablen der Oberklasse verändern
Verfasst: Donnerstag 6. Oktober 2016, 08:09
Hallo,
ich habe eine Klasse, die von einer Basislasse abgeleitet wurde. In der Basisklasse wurden Variablen definiert. In der abgeleiteten Klasse würde ich gerne eine Funktion der Basisklasse aufrufen, in der die Variablen verändert werden. Leider funktioniert das nicht, so wie vn mir gedacht. Sorry, für die komplizierte Beschreibung. Aber ich denke am Code wird es klar.
Hier erhalte ich als Ausgabe:
Danke schon mal für jeden Tip.
ich habe eine Klasse, die von einer Basislasse abgeleitet wurde. In der Basisklasse wurden Variablen definiert. In der abgeleiteten Klasse würde ich gerne eine Funktion der Basisklasse aufrufen, in der die Variablen verändert werden. Leider funktioniert das nicht, so wie vn mir gedacht. Sorry, für die komplizierte Beschreibung. Aber ich denke am Code wird es klar.
Code: Alles auswählen
class A:
def __init__(self):
self.testvar1 = 0
self.testvar2 = 0
def incvars(self, var1, var2):
var1 += 1
var2 += 1
print("var1: ", var1,"var2: ", var2)
class B(A):
def myincvars(self):
A.__init__(self)
self.testvar1 = 2
self.testvar2 = 4
A.incvars(self, self.testvar1, self.testvar2)
print("Testvar1: ", self.testvar1,"Testvar2: ", self.testvar2)
X = B()
X.myincvars()
Auf diesem Weg funktionert es natürlich. Aber ich dachte ich bekomme es so wie oben hin.var1: 3 var2: 5
Testvar1: 2 Testvar2: 4
Code: Alles auswählen
class A:
def __init__(self):
self.testvar1 = 0
self.testvar2 = 0
def incvars(self, var1, var2):
var1 += 1
var2 += 1
print("var1: ", var1,"var2: ", var2)
return var1, var2
class B(A):
def myincvars(self):
A.__init__(self)
self.testvar1 = 2
self.testvar2 = 4
self.testvar1, self.testvar2 = A.incvars(self, self.testvar1, self.testvar2)
print("Testvar1: ", self.testvar1,"Testvar2: ", self.testvar2)
X = B()
X.myincvars()
Im Internet habe ich ein Beispiel gefunden, wo es funktioniert. Allerdings wird dort ein Array übergeben und keine einzelne Variable.var1: 3 var2: 5
Testvar1: 3 Testvar2: 5
Code: Alles auswählen
def set( x ):
x[0] = 3
a = [ 1, 2, 3 ]
print("a vorner:", a)
set( a )
print("a nachher:", a)
Gibt es irgendeine Lösung, dass ich das auf dem ersten Weg hinbekomme?a vorner: [1, 2, 3]
a nachher: [3, 2, 3]
Danke schon mal für jeden Tip.