Schlüsselwort super()

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: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@snafu: Naja, die `__init__()` ist schon recht häufig in Klassen anzutreffen und hat immer den gleichen Namen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dann würde mich mal ein Beispiel aus einem realen Projekt interessieren, welches Mehrfachvererbung von mehreren Klassen mit __init__() anwendet, unabhängig von super() oder nicht super(). Ich habe sowas nämlich in freier Wildbahn noch nicht gesehen...
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@snafu: Ich auch nicht, wobei das natürlich auch dadurch bedingt sein kann, dass das alles so doof ist.

Konsens scheint hier zu sein `super()` einfach wie beispielsweise ``super`` in Java zu verwenden und MRO & Co einfach zu ignorieren und kaputten Code zu schreiben weil — warum eigentlich? Weil ``super().__init__()`` wirklich so viel weniger zu tippen ist als ``BaseClass.__init__(self)``? Ich kenne keinen Texteditor der zum programmieren taugt, der nicht mindestens ganz einfach Worte die es bereits gibt, als Autovervollständigung anbietet. Meiner bietet Codesnippets, und es gibt eines für Klassen – da muss man diese Zeile gar nicht tippen, sondern raus löschen wenn man sie nicht haben will. Wobei das auch nur ein Tastendruck (Kombination zum Zeile löschen) ist, denn im Zuge des Ausfüllens landet man hinter dem ``self`` um Argumente zu ergänzen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Naja, man könnte das DRY-Prinzip anführen (Wiederholungen im Code vermeiden). Auch beim Umbenennen von Klassen muss man die Änderung nicht überall übernehmen. Das wurde aber auch alles schon geschrieben, wenn man fleißig mitgelesen hat. :)
Antworten