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.
Koegli

Newbie Frage zu Klassen

Beitragvon Koegli » Donnerstag 5. Dezember 2002, 16:27

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

Beitragvon Beyond » Donnerstag 5. Dezember 2002, 19:34

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

Beitragvon hans » Donnerstag 5. Dezember 2002, 22:03

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:

Beitragvon RicmanX » Donnerstag 5. Dezember 2002, 23:16

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

Beitragvon hans » Donnerstag 5. Dezember 2002, 23:23

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder