Datenkapslung Python wie sinvoll jetzt?

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
hume
User
Beiträge: 9
Registriert: Mittwoch 24. August 2022, 17:07

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
hume
User
Beiträge: 9
Registriert: Mittwoch 24. August 2022, 17:07

__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
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
hume
User
Beiträge: 9
Registriert: Mittwoch 24. August 2022, 17:07

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
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

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.
hume
User
Beiträge: 9
Registriert: Mittwoch 24. August 2022, 17:07

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.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

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.
hume
User
Beiträge: 9
Registriert: Mittwoch 24. August 2022, 17:07

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. :)
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

So ein Video kommt dabei rum, wenn sich Java-Programmierer/innen auf machen, ihre Denkstrukturen in Python umzusetzen. Grausam.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

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