Newbie Frage zu Klassen

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
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
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

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.
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

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
RicmanX
User
Beiträge: 69
Registriert: Donnerstag 29. August 2002, 17:10
Wohnort: Erfurt
Kontaktdaten:

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:
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

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 :?
Antworten