Python und Django-Grundlagen (englisch)

Gute Links und Tutorials könnt ihr hier posten.
Antworten
steveO_O
User
Beiträge: 35
Registriert: Montag 23. März 2020, 20:08

Benutzeravatar
noisefloor
User
Beiträge: 4171
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

... und unvollständig. Z.B. gibt es nichts zu Klassen. Bei Funktionen ist zumindest in der geschriebenen Version nichts über named arguments und positional arguments zu finden.

Bei Django ist, soweit ich das sehe, das Admin-Backend gar nicht erwähnt.

Gruß, noisefloor
steveO_O
User
Beiträge: 35
Registriert: Montag 23. März 2020, 20:08

Was für ein sinnloser, unnötiger Kommentar. Dazu noch schlecht recherchiert.
Benutzeravatar
noisefloor
User
Beiträge: 4171
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

kann ja jeder behaupten. Hast du irgendwas, was deine Behauptungen stützt? Z.B. einen Link auf den Teil des Python-Tutorials, der Klassen erklärt? Oder einen Link auf den Teil des Django-Tutorials, der das Admin-Backend erklärt?

Gruß, noisefloor
steveO_O
User
Beiträge: 35
Registriert: Montag 23. März 2020, 20:08

Meine Behauptungen stützen? Als wenn ich hier irgendwie motiviert wäre Gerüchte in die Welt zu setzen und andere Neulinge auf die Seiten zu locken :lol: :lol: Insgeheim verdiene ich nämlich auf Umwegen Geld mit diesen Seiten.

Aber gut, weil du so nett fragst:

https://www.py4e.com/lessons/Objects

https://www.dj4e.com/lessons/dj4e_users
Benutzeravatar
__blackjack__
User
Beiträge: 13995
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Meh, `__init__` und `__del__` sind nicht „Konstruktor“ und „Destruktor“ und es fehlt der wirklich wichtige Hinweis, dass der `__del__`-Aufruf nicht garantiert ist, und das deshalb nahezu nutzlos ist, was der Grund ist, warum das sehr selten implementiert wird. IMHO sollte man `__del__` in einem Tutorial für Anfänger gar nicht erwähnen. Da kann der Anfänger ja gar nix mit anfangen, aber er kann auf die Idee kommen das zu nutzen.

Die Beispielklassen sind auch alle recht sinnfrei, das heisst man lernt nur wie das syntaktisch geschrieben wird, aber nicht wo der Einsatz sinnvoll ist und insbesondere auch nicht wo das keinen Sinn macht. Das Klassen mit einem Attribut und einer Methode zusätzlich zur `__init__()` beispielsweise komisch riechen und sehr oft nur eine unnötig kompliziert ausgedrückte Funktion sind.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
geraldfo
User
Beiträge: 73
Registriert: Samstag 28. Januar 2023, 20:19
Wohnort: Nähe Wien
Kontaktdaten:

__blackjack__ hat geschrieben: Mittwoch 11. Juni 2025, 10:08 Die Beispielklassen sind auch alle recht sinnfrei
Das ist leider in fast allen Lernunterlagen so.
Benutzeravatar
__blackjack__
User
Beiträge: 13995
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@geraldfo: Naja wirklich so komplett sinnfrei? Oft gibt es ja Beispiele mit Autos/Fahrzeugen, Tieren, oder Bankkonten die auch nicht so toll sind, aber eben doch wenigstens mehrere Merkmale pro Datentyp zusammenfassen und für die Beispiele sinnvolles Verhalten zeigen, und auch bei der Vererbung was nachvollziehbares haben. Also wo man mindestens mal eine Idee davon bekommt, was es mit OOP auf sich hat.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Benutzeravatar
snafu
User
Beiträge: 6850
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Habe nun auch mal kurz in den Abschnitt zu OOP reingeguckt. Das Beispiel ist etwas oberflächlich und die Interna mit type() und dir() halte ich nicht für anfängerfreundlich. Eine Erklärung der Philosophie hinter OOP wäre natürlich wünschenswert. Dieser Part fällt aber auch bei anderen Tutorials eher mager aus.

Klassen werden in Python da spannend, wo ich mit Dunder-Methoden arbeite oder per @classmethod einen alternativen Konstruktor bauen kann oder mittels @property auf dynamische Weise einen Attributzugriff implementiere. Bei einem Bankkonto wäre eine sinnvolle Implementierung von __str__(), __add__() und __sub__() ganz hilfreich. Habe ich aber bisher in keinem Tutorial finden können. Wobei ich auch nicht 34653645 Stück gelesen habe.

Gut durchdachte Klassen zeichnen sich IMHO auch dadurch aus, dass sie möglichst Methoden ohne Argumente anbieten oder bei Argumenten auch noch zusätzlich Gebrauch von den Instanzattributen machen. Wenn das am Ende nur eine als Klasse verkleidete Funktionssammlung ist, dann hat man das Konzept nicht wirklich verstanden.
Zuletzt geändert von snafu am Mittwoch 11. Juni 2025, 16:55, insgesamt 2-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 13995
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde sagen Klassen wären schon mit deutlich weniger OOP interessant, weil es sonst keinen Verbunddatentyp in Python gibt. Da wo man in Sprachen ohne explizite OOP-Unterstützung so etwas wie RECORD, struct, TYPE oder ähnliches hat, braucht man in Python ja schon eine Klasse, auch wenn man die dann nicht für OOP verwendet. collections.namedtuple() als Funktion mal nicht mitgezählt, wobei auch das ja letztendlich dynamisch eine Klasse erstellt.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Benutzeravatar
snafu
User
Beiträge: 6850
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Naja, die größte Ähnlichkeit zu einem Struct weist doch ein Wörterbuch auf. Damit kann man auf sehr simple Weise einen Verbund von benannten Werten bauen.
Benutzeravatar
__blackjack__
User
Beiträge: 13995
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@snafu: Ein Struct ist ein Datentyp. Ein Struct `Point` ist ein anderer Typ als ein Struct `Account`. Wenn man diese beiden Dinge als Wörterbücher repräsentiert, haben beide den gleichen Typ. Und ein Struct hat einen festen Satz an Attributen. Ein Wörterbuch ist da beliebiger. Der Schritt von einem Struct zu einer Klasse ist auch kürzer, so wie das in Python von einer Datenklasse zu einer ”richtigen” Klasse ist, als wenn man vorher eine Abbildung von Zeichenketten zu Werten hat.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
steveO_O
User
Beiträge: 35
Registriert: Montag 23. März 2020, 20:08

Mir haben die Videos sehr geholfen.
Antworten