Seite 1 von 1

Newbie Frage zu Klassen

Verfasst: Donnerstag 5. Dezember 2002, 16:27
von Koegli
Ich bin kompletter Python-Neuling, aber von der Einfachheit und den vorhandenen Bibliotheken, Plattformunabhaengigkeit, Community sehr begeistert.

Mit einem C++-Background stolpere ich aber trotdem ueber so manches:

ich definiere eine Klasse mit:

class name:
statement....

So wie ich es verstanden habe, kann ich nun von ausserhalb der Klasse soviele Variablen wie moeglich hinzufuegen. Gibt es keine private oder protected class members? Wie kann ich verhindern, dass ein client einfach Dinge zu meiner Klasse hinzufuegt? Oder liege ich komplett falsch?

In C++ kann ich ja sehr elegant nur die Implementierung oder das Interface vererben, alles andere ist abgekapselt. Vertraut man in Python nur auf den Goodwill des client?

Gruss,

NICOLAUS

Verfasst: Donnerstag 5. Dezember 2002, 19:34
von Beyond
Private etc. gibt es nicht.

GvR hat dazu mal etwa gesagt: Wir sind ja keine Kinder

generell sind Variablen mit Unterstrichen am Anfang meist etwas internes und wenn man dran rum pfucht sollte man wissen was man tut.

Es gibt aber mit RestrictedPython eine Möglichkeit den Zugriff zu beschränken -- also ähnliche Dinge wie in C++ zu machen z.B. gut bei Klassen die Passwörter speichern. Meistens finde ich das ganze aber eher hinderlich -> kein RestrictedPython-Experte.

Verfasst: Donnerstag 5. Dezember 2002, 22:03
von hans
Das mit der Variablendeklaration ist schon ein Kreuz mit Python. Ist eigentlich Schade, dass ein Deklarationsmöglichkeit fehlt. Ich komme eigentlich von Delphi und da muß ja nun alles definiert werden.

Aber man kann ja bekanntlich nicht alles haben.

Hans

Verfasst: Donnerstag 5. Dezember 2002, 23:16
von RicmanX
Das ist meiner Meinung nach ein wesentlicher Vorteil von Interpretersprachen. Man braucht nicht umständlich irgendwas definieren, kann schnell mal umformen ("0" -> 0) usw.
Hab mich in meiner Turbo Pascal Zeit nur darüber aufgeregt das dauernd Fehler auftreten, nur weil ich zu dumm war aus 20 Möglichkeiten die richtige für die Sache zu finden :roll:

Verfasst: Donnerstag 5. Dezember 2002, 23:23
von hans
Mag Geschmackssache sein, ich bin eigentlich ein Deklarationsfetischist geworden. Dann kann man nicht mal eben den String mit Floatingpoint überschreiben. Aber wie gesagt, Geschmackssache eben :?