Ich habe eine Verständnisfrage zu privaten Attributen:
Kann man Sie gleich schreiben z.B.:
Code: Alles auswählen
self.__variable = variable
Code: Alles auswählen
self.__var_x = variable
Code: Alles auswählen
self.__variable = variable
Code: Alles auswählen
self.__var_x = variable
Dann geht es also in der Regel nur darum, Namenskonflikte in Unterklassen zu vermeiden?Beachte, dass die Ersetzungsregeln vor allem dazu gedacht sind, Unfälle zu vermeiden; es ist immernoch möglich auf einen solchen als privat gekennzeichneten Namen von aussen zuzugreifen und ihn auch zu verändern. Das kann in manchen Umständen sogar nützlich sein, beispielsweise in einem Debugger.
BlackJack hatte schon gut erklärt, was ich meinte. Übrigens verbietet mir diese Sichtweise nicht das Definieren von "privaten" Klassen oder Methoden. Es gibt ja häufig Situationen, wo man Hilfskonstrukte benötigt, um bestimmte Abläufe zu vereinfachen, z.B. um sehr ähnliche Codeteile nicht doppelt schreiben zu müssen. Diese "Krücken" sind dann zwar im Kontext der Implementierung sinnvoll, für eine öffentliche Schnittstelle aber nicht so toll (oft sind sie auf einer niedrigen Abstraktionsebene angesiedelt, ihre Verwendung erfordert Kenntnisse über Implementierungsdetails, usw). Die kennzeichne ich natürlich schon mit vorangestelltem Unterstrich, damit der Anwender leicht erkennen kann, dass etwas nur für den internen Gebrauch gedacht ist. Ich finde bloß die übermäßige Einteilung in private Bereiche nervig - allein schon, weil man beim Programmieren dann ständig überlegen muss, ob man etwas jetzt mit oder ohne Unterstrich benannt hat.Schwarzer Wolf hat geschrieben:@snafu
Kannst Du mir das mit "read-only" genauer erklären. Verstehe das nicht. Sorry
Du meinst damit Klassen, die dem "struct" bei "C" ähneln?snafu hat geschrieben: Es gibt ja häufig Situationen, wo man Hilfskonstrukte benötigt, um bestimmte Abläufe zu vereinfachen
Dein Buch scheint eher mittelmäßig. Welches ist es zufällig genau?Schwarzer Wolf hat geschrieben: Es ist dann quasi auch sinnlos, wie in meinem Buch steht "Private Attribute" über get.x oder set.x aufzurufen?
Python 3 - Lernen und professionell anwenden von Michael WeigendKebap hat geschrieben:
Dein Buch scheint eher mittelmäßig. Welches ist es zufällig genau?
Die beschriebenen Konzepte treffen auf andere Sprachen zu, aber bei Python eher unüblich / unnötig. Daher scheint der Autor eher aus anderen Sprachen auf Python zu projizieren, anstatt wirklich Python zu lehren.
Die waren nicht gemeint, nur weil sie zufällig so ähnlich klingen...Schwarzer Wolf hat geschrieben:Du meinst damit Klassen, die dem "struct" bei "C" ähneln?snafu hat geschrieben: Es gibt ja häufig Situationen, wo man Hilfskonstrukte benötigt, um bestimmte Abläufe zu vereinfachen
Quelle: https://mitp.de/Unsere-Autoren/Michael-Weigend/Michael Weigend ist Informatiklehrer und hat bereits mehrere Bücher zu Python geschrieben wie z.B. Python Ge-Packt.