Seite 1 von 1
Methode einer Klasse über dict-value aufrufen?
Verfasst: Sonntag 21. Juni 2020, 11:31
von paitn
Hallo,
bei einer Funktion - also ohne Klasse ohne 'self' - klappt das aber innerhalb einer Klasse bekomme in einen
NameError: name 'self' is not defined
Code: Alles auswählen
1 │ class Klasse:
2 │ def funktion(self):
3 │ print("klappt")
4 │
5 │ mydict={5:self.funktion}
6 │ mydict.get(5)()
Wie und wo bekomme ich ein 'self' reingemogelt oder ist dies überhaupt nicht möglich?
Grüße
Michael
Re: Methode einer Klasse über dict-value aufrufen?
Verfasst: Montag 22. Juni 2020, 12:37
von xXSkyWalkerXx1
Code: Alles auswählen
class Klasse:
def funktion(self):
print("klappt")
return None
def main(self):
mydict={5:self.funktion}
mydict.get(5)
Du hast 'mydict' als Attribut deiner Klasse definiert, da es keiner Funktion der Klasse zugehörig war.
Außerdem macht dein Dictionary kein Sinn: 5 ist was?
Mal ein Beispiel:
Hier sieht du, dass wir die Anzahl von etwas auf 5 setzen.
Andersrum geht es aber nicht...
Ich meine, klar, würde wahrscheinlich schon funktionieren, aber was ist, wenn mehrere Variablen des Dict. 5 hätten - dann geht das nicht und unübersichtlich ist es im Allgemeinen auch extrem.
Re: Methode einer Klasse über dict-value aufrufen?
Verfasst: Montag 22. Juni 2020, 13:30
von Sirius3
@paitn: für ein `self` brauchst Du eine Instanz der Klasse. Während der Klassendefinition existiert aber noch keine Instanz. Kannst Du etwas weiter ausholen, welches Problem Du eigentlich lösen willst?
@xXSkyWalkerXx1: verstehe das mit der 5 auch nicht, aber wenns nunmal der Key ist.
Re: Methode einer Klasse über dict-value aufrufen?
Verfasst: Montag 22. Juni 2020, 17:16
von paitn
Verstehe, danke!
Ich möchte eine Uhr programmieren, bin aber inzwischen auf eine andere Idee gekommen und werde das einfacher lösen.
Trotzdem interessierte es mich.