private-Konvention in Python

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Buchfink: Wie man das jetzt speziell in PyCharm verwendet weiss ich nicht. Ich schreibe mit einem normalen Editor und lasse Tests im Terminal laufen. Also `pytest` als Programm ausführen, mit dem was getestet werden soll als Argument und ggf. noch Optionen um Tests auf bestimmte einzelne Tests oder Gruppen von Tests einzuschränken, und beispielsweise so etwas wie Doctests auch gleich auszuführen.

Für `unittest`-Tests verwende ich auch `pytest`, weil das wie gesagt auch damit klar kommt, und sofern sich bei `unittest` da nichts geändert hat, sind die Ausgaben von `pytest` um einiges besser, weil das einiges an Mühe darauf verwendet auch den jeweiligen Ausdruck zu verstehen der fehlgeschlagen ist, und welche Werte die beteiligen Variablen hatten, und dann auch versucht ein sinnvolles ”diff” zwischen dem Ergebnis und dem erwarteten Wert anzuzeigen.

Die Klassen `Document` und `Paragraph` sind keine konkreten, das war nur als Beispiel um da irgendwas zu haben, unter dem man sich was vorstellen kann.

Zu „test fixture“ allgemein gibt es eine Wikipedia-Seite: https://en.wikipedia.org/wiki/Test_fixture

Das ist sogar so allgemein, dass der Begriff nicht auf Software-Entwicklung beschränkt ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@__blackjack__
Ich nutze je nach dem an welchem Rechner ich bin und was gerade zweckdienlich ist, JupyterNotebooks /JupyterLab , PyCharm oder VSCode.
So lerne ich auch gleich die verschiedenen IDEs und deren Vor- und Nachteile.
Im Moment bin ich noch unentschlossen, was mir besser gefällt - aber PyCharm nutze ich deutlich öfter. (Es ist ja alles besser wie das, was von Embarcadero kommt...)

Die JupyterNotebooks finde ich deshalb sehr praktisch, weil man damit auch schnell mal was ausprobieren kann. Es gibt noch eine Reihe weitere Vorteile, die kennst Du aber bestimmt alle. (Manchmal wenn es die Zeit zulässt, versuche ich Probleme, die hier diskutiert werden, zu verstehen und die Lösung nachzuvollziehen. Dabei lerne ich auch ziemlich viel, habe ich festgestellt. Besonders wenn hier verschiedene Lösungen gegeneinander abgewogen werden, finde ich die Diskussion sehr spannend und lehrreich. Dies soll an dieser Stelle auch mal gesagt sein)
und dann auch versucht ein sinnvolles ”diff” zwischen dem Ergebnis und dem erwarteten Wert anzuzeigen.
ja, genau das war mir auch aufgefallen. Und gute Fehlermeldungen sind oft Gold wert.
(Z.B. bei den integrierten automatisierten Tests von Postman sind die Fehlermeldungen imho auch ziemlich gut, aber das nur am Rande.)
Die Klassen `Document` und `Paragraph` sind keine konkreten, das war nur als Beispiel um da irgendwas zu haben, unter dem man sich was vorstellen kann.
ja, das habe ich gestern Abend dann auch irgendwann vermutet. In geistiger Umnachtung habe ich da gestern wohl einigen Stuß geschrieben :-(
Und vielen Dank für den Wikipedia-Artikel. Der war sehr aufschlussreich.

Nachtrag zu meinem Geschreibsel von gestern:
Leider habe ich oft nur am Wochenende länger Zeit, um mich neuen Themen ausführlicher zu widmen. Da sich aber viele nette Menschen hier so viel Mühe geben, mir auch zeitnah Sachen zu erklären, möchte ich immer aber wenigstens kurz darlegen, wie mein "aktueller Wissensstand" dazu ist und wo noch Fragen in meinem Hirn herumschwirren. Denn meist ist das eine regelrechte Fragenkasskade, die dann auf Basis des neuen Inputs in meinem Kopf entsteht.
Und ich möchte keinesfalls den Eindruck erwecken, dass ich die Informationen, die ihr mir hier so freundlich zukommen lasst "versacken" lasse.
Dies nur als kleine Erklärung, warum ich manchmal unqualifizierte Fragen schreibe und direkt dazu schreibe, dass ich das noch googeln muss.
Ich habe den Anspruch, meine Fragen immer so zu formulieren, dass ich nicht "die Entwickler-Innung blamiere" - aber ich glaube manchmal geht das daneben :)

Morgen ist Samstag. Ganz viel Zeit um mich nochmal ausführlicher mit den ganzen "Dunder"-Methoden zu befassen. Jedenfalls ist das mein Vorhaben für dieses Wochenende.
Dann kommen hoffentlich auch qualifizierte/interessante Fragen von mir. :)

LG
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Hallo zusammen,

bei meinen Recherchen bin ich auf folgenden Link gestoßen:
https://nbviewer.org/github/rasbt/pytho ... vate_class

Ich dachte ggf. wäre es sinnvoller, das "Pferd mal von hinten aufzuzäumen" und zu schauen, was es alles sonst so an populären Irrtümern in Python gibt (bevor ich in die nächste Falle latsche)
Sprich: "Wissensdefault" einfach rumdrehen und mal einen Blick auf die Besonderheiten werfen.

Passend zu diesem Thread habe ich die oben stehende Erklärung gefunden. So wie ich das nun mit den Underscores verstanden habe, ist die Erklärung dort nicht falsch. Aber durchaus nicht ganz so klar, wie das, was ich aus dem Beitrag von @__blackjack__ herausgelesen habe. Denn das klingt bei Herrn Raschke so, als wäre das durchaus eine gängige Methode "ein bisschen Privatheit" zu bekommen. Der "Missbrauchscharakter" kommt da imho nicht so ganz heraus.

Was ist denn Eure fachliche Meinung zu dem Artikel über "private"?

Lieben Dank schon mal für Eure Einschätzung.

Hintergrund meiner Frage ist, dass ich nur bedingt einschätzen kann, inwieweit der Rest dort fundiert ist. Einerseits geht es stellenweise sehr in die Tiefe (was ich sehr interessant finde) aber andererseits wird viel Wissen vorausgesetzt (was ich noch nicht habe).
Es werden dort halt viele Fragen beantwortet, die ich mir auch schon gestellt habe.
Im Moment ist die "Private"-Thematik für mich daher bisschen ein Lackmus-Test, um zu entscheiden, ob ich eine Quelle näher ansehe.

Am Rande
Die restlichen Sachen, die dort aufgeführt sind, habe ich nur grob überflogen. Einiges konnte ich verstehen, jedoch nicht alles. Ich habe noch viel vor mir :)

Sorry wenn der Eindruck entsteht, dass ich mich da ein bisschen "dran festbeiße", aber mir liegt es daran, wirklich zu verstehen, was ich tue. Alles andere ist ja immer "gefährliches Halbwissen".

LG
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Buchfink hat geschrieben: Samstag 23. Oktober 2021, 12:39 Was ist denn Eure fachliche Meinung zu dem Artikel über "private"?
Klingt prinzipiell OK. Ich würde allerdings den Begriff "private" durch "for internal use" ersetzen.

Da kommt dann der Unterchied zu einem "private" wie es z.B. in C++ verwendet wird zum Vorschein. Ich kann so ein Attribut/eine Methode als Entwickler verwenden, wenn ich davon überzeugt bin, dass mir das Vorteile welcher Art auch immer bringt - und das kann ab und zu tatsächlich sehr praktisch sein. Ich muss mir nur darüber im Klaren sein, dass es keine Garantie dafür gibt, dass besagtes Attribut/Methode in der nächsten Version der Bibliothek noch vorhanden ist und/oder das gleiche tut.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Buchfink,

ich weiß nicht ob ich mir anmaßen kann eine fachlich versierte Einschätzung zu geben.
Es ist gut, dass der Autor nicht versucht, public und private auf Python anzuwenden, sondern eigentlich erklärt, dass es diese Zugriffsbeschränkung in Python eigentlich gar nicht gibt. Noch besser wäre es gewesen, den Artikel zu public / private gar nicht zu schreiben :)
Es ist einfach kein Thema in Python. Ich persönlich habe es auch nie vermisst, seit dem ich in Python programmiere. Das ist so als würdest du mit einem Elektroauto an einer Tankstelle vorbeifahren.

Ich habe den Rest nur überflogen. Es sind sicher einige gute und für Python wichtige und relevante Themen dabei. Erfrischend finde ich, dass es nicht mit "Hallo Welt" anfängt, sondern an eher erfahrene Programmierer gerichtet ist.
Persönlich würde ich offizielle Python-Veröffentlichungen immer als Maßstab nehmen, also das Python Tutorial und die Dokumentation. Dazu kann man noch einen Blick in die PEP werfen um weitere Hintergrundinformationen zu bekommen.
Ich weiß es nicht genau, aber ich bin mir ziemlich sicher, dass diese Dokumente von sehr erfahrenen Python-Entwicklern geprüft bzw. geschrieben werden.
Alles andere ist oft aus der Sichtweise von Einzelnen geschrieben. Dann schaust du halt durch deren Brille.
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@/me

danke - ja da hast Du Recht. Du bringst das, was mich gestört hat, sehr gut auf den Punkt. Denn "private" scheint mir in diesem Kontext eine falsche Vokabel zu sein.

Das andere, was mich irritiert hat, war dann, dass da auch (aber etwas verklausuliert) der Hinweis kam, dann die zwei Underscores zu nutzen. Allerdings wurde dort zumindest drauf hingewiesen, dass es für was anderes gedacht ist und dass es keinen "Schutz" bietet. Immerhin. :)
Ich glaube aber, dass ich das ohne die Erklärung von Euch hier gar nicht herausgelesen hätte...

Nun ja, ich werde mir dann mal die anderen Sachen anschauen, die dort aufgelistet sind :)
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@rogerb

Erfrischend finde ich, dass es nicht mit "Hallo Welt" anfängt, sondern an eher erfahrene Programmierer gerichtet ist.
ja, das habe ich auch so gesehen.
Wenn ich bei den Tutorials bei 0 anfange, dann kommt immer sehr viel Basiswissen. Klassen kenne ich schon. Vererbung auch etc. Es ist daher immer bisschen schwer zu sagen, welchen Teil eines Tutorials kann ich überspringen und wo werden ggf. pythonische Besonderheiten erklärt.

Im Moment versuche ich mich wie auch von Dir vorgeschlagen primär an den offiziellen Quellen zu orientieren. Allerdings verstehe ich dort nicht immer alles, weshalb ich dann immer erst mal google anwerfe und schaue, ob ich darüber vielleicht erst mal meine Fragen soweit klären kann (so bin ich auch über den Link oben gestolpert).

Lieben Dank für Deine Einschätzung!
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Buchfink,

das stimmt, die offiziellen Quellen, sind sicher eher für Pythonentwickler als Referenz zum Nachschlagen gedacht und gehen von Vorwissen aus.
Ich vertraue auch noch auf die kostenfreie Version dieser Seite:
https://realpython.com/
Die Artikel gehen auch ins Detail. Der jeweilige Autor stellt sich unter dem Artikel kurz vor und viele Artikel werden auch von mehreren Autoren zusammen geschrieben.

Diese Seite ist eine der schlechtesten die ich je gesehen habe (nur mal so zum Vergleich und als Vorwarnung)
https://www.geeksforgeeks.org/
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@rogerb

danke für den Tipp!
auf geeksforgeeks bin ich auch noch nie fündig geworden. (zu viel Rauschen glaube ich....)
In Delphi muss ich oft mit Libs arbeiten, zu denen es gar keine Doku gibt. Und da helfe ich mir, indem ich einfach in die Lib hineindebugge und einfach gucke, wie das, was ich brauche funktioniert. (Streng genommen ist ja eigentlich nur der Quellcode die Primärquelle)

In Python scheint das unüblich zu sein, vermute ich?
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Buchfink hat geschrieben: Samstag 23. Oktober 2021, 18:30 In Python scheint das unüblich zu sein, vermute ich?
Keineswegs. Auch wenn Libraries gut Dokumentiert sind, kann sich eine Blick in die Sources lohnen und Fragen beantworten, die für einen persönlich in der Dokumentation offen geblieben sind.
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@kbr

Dankeschön:), denn genau das mache ich gerade.
Aber für das Thema mache ich lieber einen separaten Thread auf, denn dass passt hier nicht rein.
Antworten