Neuling braucht Hilfe

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.
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Achso?
Mit der Class-Methode gibt es gar keine Globalen Variablen mehr im Klassischem Sinne?
Aber dann kann man doch anderweitig von jedem lokalem Bereich aus auf die Variablen zugreifen, oder?
Der Sinn leuchtet mir nicht ein. Tut mir leid.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
BlackJack

Ich versuch's auch nochmal. Also `global` ist "schlecht" weil so Funktionen von Sachen ausserhalb ihrer Definition abhängig werden. Eine Funktion sollte nur Auswirkungen auf die Parameter haben, die man ihr übergibt und evt. einen Rückgabewert haben.

Wenn sich mehrere Funktionen so etwas wie eine "globale" Variable teilen müssen, oder alle diese als Parameter entgegennehmen, dann ist das ein gutes Zeichen dafür, dass man eine Klasse daraus machen sollte. Mit der "globalen" Variable als Instanz-Attribut und den Funktionen als Methoden.

Hattest Du nicht erwähnt, dass Du schon einmal etwas in Delphi programmiert hast? Das ist doch auch objektorientiert!?
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

BlackJack hat geschrieben:...
Hattest Du nicht erwähnt, dass Du schon einmal etwas in Delphi programmiert hast? Das ist doch auch objektorientiert!?
Das ist schon bald 3 Jahre her.
Funktionen habe ich dort nicht gemacht, sondern die Buttons (auf visible = False) dann zweckentfremdet. Und innerhalb dessen Ablauf konnte ich halt auf alle Globalen Varialblen zugreifen, so weit ich weiß.

Ich blicke bei dem Ganzen immer noch nicht durch.
Wenn ich mir eine Globale Variable zulege, denn eben damit auch die Funktionen darauf zugreifen können.
Sonst bräuchte es keine Globalen Variablen.
Und... ich weiß da einfach nicht, wieso ich daraus eine Classe machen soll, dessen Funktion ich weniger verstehe.
Natürlich, wenn ich wo einen Falschen Namen hernehme, dann kommt was durcheinander. Das passiert dann doch so oder so (?), egal ob ich falsche Variablen-Namen nehme, oder falsche Class-Variablen-Namen nehme?

Hm... der einzige Grund, der mir einfiehle, falls in einer Klasse oder Funktion, welche ich nicht selbst erstellt habe, eine Variable nicht richtig zugewiesen wurde, und ich verwende saudummerweise den gleichen Globalen Namen.
Aber sonst ... .
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
BlackJack

Erwin hat geschrieben:
BlackJack hat geschrieben:...
Hattest Du nicht erwähnt, dass Du schon einmal etwas in Delphi programmiert hast? Das ist doch auch objektorientiert!?
Das ist schon bald 3 Jahre her.
Funktionen habe ich dort nicht gemacht, sondern die Buttons (auf visible = False) dann zweckentfremdet. Und innerhalb dessen Ablauf konnte ich halt auf alle Globalen Varialblen zugreifen, so weit ich weiß.
Delphi ist doch auch eine objektorientierte Sprache!? Wie kann man da ohne Funktionen/Methoden auskommen!?
Ich blicke bei dem Ganzen immer noch nicht durch.
Wenn ich mir eine Globale Variable zulege, denn eben damit auch die Funktionen darauf zugreifen können.
Sonst bräuchte es keine Globalen Variablen.
Man sollte aber keine globalen Variablen brauchen. Funktionen sollten unabhängig sein. Sonst bekommt man unübersichtlichen Quelltext bei dem Funktionen durch mehr zusammhängen als nur gegenseitige Aufrufe.

Dein Button-Verschieben aus einem anderen Beitrag kann man zum Beispiel nicht für zwei verschiedene Sätze von Buttons gleichzeitig verwenden, weil es nur eine globale Variable gibt, die den aktuellen Button angibt, der verschoben wird.
Und... ich weiß da einfach nicht, wieso ich daraus eine Classe machen soll, dessen Funktion ich weniger verstehe.
Mit Klassen und deren Funktionsweise solltest Du Dich bei Python wirklich besser vertraut machen. Python ist eine durch und durch objektorientierte Sprache. Im Grunde ist alles in Python ein Objekt.

Während man in vielen einfachen Skripten noch um Klassen drumherum kommt, ist das Verständnis dafür bei grafischen Oberflächen sehr wichtig um zu verstehen, wie die GUI also z.B. Tkinter funktioniert.

Von Alan Gauld gibt's einen ganz guten Text zum lernen von Programmieren allgemein inklusive Objektorientierung und ereignisbasiertem Programmieren (GUIs), der unter anderem auf Python als Beispielsprache setzt und der auch in einer deutschen Übersetzung vorliegt. Man kann den ganzen Text als ZIP-Archiv heunterladen (auf der linken Seite fast ganz unten).
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

BlackJack hat geschrieben:...
Delphi ist doch auch eine objektorientierte Sprache!? Wie kann man da ohne Funktionen/Methoden auskommen!?
In dem man eben Buttons-Events zweckentfremdet.
Das Buch, was ich dazu laß, hatte die Funktion-Deklarierung dermaßen schlecht erklärt, daß ich einfach nicht dahinter kam.
Also mußten eben unsichtbare Buttons als Fuktionen bei mir herhalten.
BlackJack hat geschrieben:...
Man sollte aber keine globalen Variablen brauchen. Funktionen sollten unabhängig sein. Sonst bekommt man unübersichtlichen Quelltext bei dem Funktionen durch mehr zusammhängen als nur gegenseitige Aufrufe.

Dein Button-Verschieben aus einem anderen Beitrag kann man zum Beispiel nicht für zwei verschiedene Sätze von Buttons gleichzeitig verwenden, weil es nur eine globale Variable gibt, die den aktuellen Button angibt, der verschoben wird.
Unter Global verstehe ich nun mal, daß man auch innerhalb einer Funktion darauf zugreifen kann. Ob dies Class ist oder eine globale Variable ... .

Wieso sollte man alle Buttons aufsammeln?
Diese Möglichkeit hatte ich nicht im Sinn.
Ob es mit der Class-Variable einfach zu machen ist, weiß ich nicht. Kann es nämlich Gedanklich nicht nachvollziehen.
Aber mit Global ... wüßte da schon eine Möglichkeit. Mittels Directory.
BlackJack hat geschrieben:
Und... ich weiß da einfach nicht, wieso ich daraus eine Classe machen soll, dessen Funktion ich weniger verstehe.
Mit Klassen und deren Funktionsweise solltest Du Dich bei Python wirklich besser vertraut machen. Python ist eine durch und durch objektorientierte Sprache. Im Grunde ist alles in Python ein Objekt.
...
Bin froh, das ich problemlos die einfachen Funktonserstellungen verstehe.
Mit Vererbung ... geht gerade noch.
Classe ist schon recht schwer für mich zu verstehen.
Aber bei der Variablen-Classe ... ich vestehe da weder die Vererbung, noch deren Funktion (der Classe). Da wird also was reingelegt? Aber wie ruft man es auf? Und geht es überall? Muß ich in der Funktion die Variable dann anders aufrufen? Und was hat es sich mit init = False auf sich? Und das mit dem True? Dazwischen liegen für mich Welten, wann man es mit: 'x = 0' oder 'x ='0'', vergleicht.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
ND
User
Beiträge: 4
Registriert: Freitag 10. Juni 2005, 10:31

Danke für eure Beiträge. Da hab cih wohl eine schöne Diskussion mit den Variablen angeregt.

Ich ahb mir folgendes überlegt, das Bild mit den Endungen zu überprüfen wäre viel zu lang, da es einfahc zu viele Bildtypen geht.
Ich möchte einfach gucken ob der x,y oder z Wert des Bildes = 0 und damit kein Bild darstellt.
wie kann ich das denn am besten machen?
i
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Im Grunde ist alles in Python ein Objekt.
Das sagt auch noch eine Python sehr ähnliche Sprache, deren Namen ich nicht nennen werde ;)
Erwin hat geschrieben:Bin froh, das ich problemlos die einfachen Funktonserstellungen verstehe.
Mit Vererbung ... geht gerade noch.
Classe ist schon recht schwer für mich zu verstehen.
Funktionen haben keine Vererbung, das haben nur Klassen, und das macht auch nur bei Klassen Sinn.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten