Variablen in gesamter Klasse benutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DiiiDiii
User
Beiträge: 24
Registriert: Donnerstag 10. Oktober 2013, 10:30

Hi,

der Betreff ist etwas falsch ausgedrückt, aber eigentlich passt es. Und zwar habe ich in meiner __init__ Methode eine Variable start. Diese möchte ich bei einem Klick auf einen Button verändern. Bei meinem letzten Thread hat man mich darauf hingewiesen, dass "global" in einem sauberen Programm nichts zu suchen hat. Nun suche ich nach einer Lösung wie ich diese Problem lösen kann. Hier mein Code:

Code: Alles auswählen

class Kniffel(object):
        def __init__(self):
                start = 0
                root = tk.Tk()
                if start == 1:
                        btnWuerfeln = tk.Button(root, text='Naechster Wurf').grid(row=2, column=7)
                if start == 0:
                        btnSpielStart = tk.Button(root, text='Spiel starten', command=self.spielstart).grid(row=2, column=7)
                root.mainloop()

        def spielstart(self):
                start = 1
knifel = Kniffel()
Was muss ich nun machen, damit die Variable start auch wirklich geändert wird?

Mfg
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

schau dir erstmal an wie Objektorientierung, im Allgemeinen und in Python, funktioniert. Dein Code sieht nicht danach aus, als hättest du es ansatzweise verstanden. Wenn du dich da nicht einarbeitest, dann wird deine Lösung nicht besser als mit global.
Das Leben ist wie ein Tennisball.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

In diesem Zusammenhang habe ich gerade Why explicit self has to stay gefunden...

Nicht direkt eine Antwort auf die Frage aber sicherlich interassant zu wissen!

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
DiiiDiii
User
Beiträge: 24
Registriert: Donnerstag 10. Oktober 2013, 10:30

Ist leider schon ne Weile her, als ich OOP hatte... werds mir nochmal anschauen...
Antworten