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:

Code: Alles auswählen

{'anzahl':5}
Hier sieht du, dass wir die Anzahl von etwas auf 5 setzen.
Andersrum geht es aber nicht...

Code: Alles auswählen

{5:'anzahl'}
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.