Seite 1 von 1

Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 13:13
von hume
Guten Tag zusammen,

also bin derzeit bei dem Kapitel OOP und zwar geht es um die Datenkapslung, einmal _mit privat markiert und __ sehr stark privat.
Da es mit _Klasse__Test zum Beispiel umgangen werden kann, wie viel bringt dann Datenkapslung eingenlich wirklich?

Mit freundlichen Grüßen

hume

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 13:19
von __deets__
Du verstehst das Feature nicht richtig. Der doppelte unterstrich vermeiden zufällige Namenskollisionen zwischen Objekten in einer Vererbungshierarchie. Und ist nicht zu einem besseren Zugriffsschutz gedacht, weil - wie du ja schon selbst anmerkst - es trivial ist, den zu umgehen.

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 13:32
von hume
__deets__ hat geschrieben: Montag 5. September 2022, 13:19 Du verstehst das Feature nicht richtig. Der doppelte unterstrich vermeiden zufällige Namenskollisionen zwischen Objekten in einer Vererbungshierarchie. Und ist nicht zu einem besseren Zugriffsschutz gedacht, weil - wie du ja schon selbst anmerkst - es trivial ist, den zu umgehen.
ok, also das mit der Namenskollision ist mir bekannt. In einem Video wird aber behauptet: https://www.youtube.com/watch?v=wW1KSgHV8TA zur Sicherheit, also eine falsch Information?
Video stammt von der Universität Bremen. Wiegt es also in falscher Sicherheit oder gibt es wirklich einen Sicherheitsaspekt?

Mit freundlichen Grüßen

hume

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 13:48
von noisefloor
Hallo,

"Sicherheit" im Sinne von "kommt keiner dran" -> nein, gibt es nicht. "Sicherheit" im Sinne von "Sicherheit vor Namenskollisionen" -> ja.

Jedenfalls "verstecken" ein einfacher oder doppelter führendes Unterstrich keine Attribute oder Methode einer Klasse.

Gruß, noisefloor

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 13:49
von hume
noisefloor hat geschrieben: Montag 5. September 2022, 13:48 Hallo,

"Sicherheit" im Sinne von "kommt keiner dran" -> nein, gibt es nicht. "Sicherheit" im Sinne von "Sicherheit vor Namenskollisionen" -> ja.

Jedenfalls "verstecken" ein einfacher oder doppelter führendes Unterstrich keine Attribute oder Methode einer Klasse.

Gruß, noisefloor
Ok, passt, also habe ich es richtig verstanden.

Mit freundlichen Grüßen

hume

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 14:14
von kbr
Was in dem Video vermittelt wird, ist prinzipiell alles richtig – aber nicht in Verbindung mit Python. Die doppelten führenden Unterstriche dienen eben nicht der Privatheit, sondern sind die Lösung für ein Problem in der Objektorientierten Programmierung mit Python, das meisten weder haben und viele auch nicht kennen.

Und Getter und Setter schützen auch nicht. Ich kann genauso gut 'katze.name' setzen wie 'katze.setName()' aufrufen. Der Vorteil eines Setters besteht in der Möglichkeit der Plausibilitätsprüfung, wie in dem Video auch korrekt erwähnt wird. In dem Fall kommen in Python aber Properties zum Einsatz.

Wer nach solchen Videos lernt, lernt kein idiomatisches Python – das ist hier leider wieder sehr deutlich zu erkennen.

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 14:16
von hume
kbr hat geschrieben: Montag 5. September 2022, 14:14 Was in dem Video vermittelt wird, ist prinzipiell alles richtig – aber nicht in Verbindung mit Python. Die doppelten führenden Unterstriche dienen eben nicht der Privatheit, sondern sind die Lösung für ein Problem in der Objektorientierten Programmierung mit Python, das meisten weder haben und viele auch nicht kennen.

Und Getter und Setter schützen auch nicht. Ich kann genauso gut 'katze.name' setzen wie 'katze.setName()' aufrufen. Der Vorteil eines Setters besteht in der Möglichkeit der Plausibilitätsprüfung, wie in dem Video auch korrekt erwähnt wird. In dem Fall kommen in Python aber Properties zum Einsatz.

Wer nach solchen Videos lernt, lernt kein idiomatisches Python – das hier leider wieder sehr deutlich zu erkennen.
Ok, also ich habe es bei sololearn.com gelernt und es wird von _ und __ abgeraten.

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 14:18
von kbr
Einfache führende Unterstriche sind völlig ok. Das ist "privacy by convention". Der Code ist aber besser lesbar, wenn davon sparsam Gebraucht gemacht wird.

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 14:19
von hume
kbr hat geschrieben: Montag 5. September 2022, 14:18 Einfache führende Unterstriche sind völlig ok. Das ist "privacy by convention". Der Code ist aber besser lesbar, wenn davon sparsam Gebraucht gemacht wird.
Ok, mach ich. :)

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Montag 5. September 2022, 19:21
von ThomasL
So ein Video kommt dabei rum, wenn sich Java-Programmierer/innen auf machen, ihre Denkstrukturen in Python umzusetzen. Grausam.

Re: Datenkapslung Python wie sinvoll jetzt?

Verfasst: Dienstag 6. September 2022, 07:33
von Sirius3
Datenkapselung ist ein Konzept, das bei der Objektorientierten Programmierung wichtig ist, und das wird in dem Video auch erklärt. Unterschiedliche Programmiersprachen setzen das Konzept unterschiedlich um. Im Video wird das Konzept erklärt und mit Python-ähnlichem Code illustriert. Hat aber halt nichts mit wirklichem Python zu tun. Es bedarf also zweier Schritte, erstens Konzept verstehen, zweitens lernen, wie dieses Konzept in der jeweiligen Programmiersprache umgesetzt wird. Der zweite Schritt fehlt im Video.