@/me: Danke für den Beispielcode, jetzt wird mir der Unterschied bewusst und das wird auch direkt geändert. Ich werde in Zukunft beim Programmieren von Python davon ausgehen, dass das Programm von Leuten verwendet wird, die nicht darin rumpfuschen
@Siruis3: Das heißt also, wenn ich eine Klasse ableite und darin die "super" Funktion verwende, dann weiß der Interpreter direkt, dass damit die Elternklasse gemeint ist? Interessant das ich davon bisher leider nichts in der Literatur gefunden habe, scheint ja wirklich viel Käse auf dem Markt zu geben -.-
@BlackJack: Ich denke das trug wirklich zur Verwirrung bei! Ich wollte damit lediglich andeuten, dass diese Werte zu Beginn einmal vom Nutzer eingegeben werden sollen (es wird später noch eine GUI geben, welche das abfragt) und dann keine Veränderung in der Laufzeit mehr erfahren sollen. Deswegen - so lernte ich es eben im Studium mit C++ - wollte ich diese kapseln.
Ich danke euch allen nochmals sehr für eure Hilfsbereitschaft! Das ist wirklich ein tolles Forum!
Objektorientierung und Vererbung mit mehreren Skripten
Bevor man `super()` verwendet, sollte man es IMHO verstanden haben und welche Konsequenzen sich daraus ergeben: Python's Super is nifty, but you can't use it.
Ich bleibe bei einem einfachen ``Parent.__init__(A, B, C, D)`` und hatte bisher auch noch keinen Fall wo ich die ganze Komplexität von `super()` gebraucht hätte.
Ich bleibe bei einem einfachen ``Parent.__init__(A, B, C, D)`` und hatte bisher auch noch keinen Fall wo ich die ganze Komplexität von `super()` gebraucht hätte.
Gut, so habe ich es bisher auch immer verwendet und werde dann wohl auch dabei bleiben. Ich möchte mir nicht noch mehr Probleme einfangen..BlackJack hat geschrieben:Bevor man `super()` verwendet, sollte man es IMHO verstanden haben und welche Konsequenzen sich daraus ergeben: Python's Super is nifty, but you can't use it.
Ich bleibe bei einem einfachen ``Parent.__init__(A, B, C, D)`` und hatte bisher auch noch keinen Fall wo ich die ganze Komplexität von `super()` gebraucht hätte.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@BlackJack: Raymond Hettinger findet super super.
In specifications, Murphy's Law supersedes Ohm's.
@pillmuncher: Ja den Artikel kenne ich, bis zu dem hatte ich Hettinger mindestens für einen Halbgott gehalten. Die Idee bei allen Methoden immer auch **kwargs entgegen nehmen zu müssen und alle Methoden fortan nur noch mit Schlüsselwort-Argumenten aufrufen zu müssen, finde ich so alles andere als super. Bei der Adapterklasse habe ich mich dann gefragt ob er auf Drogen ist.
Ich habe meine Skripte jetzt gemäß eurer Anweisungen und Hilfen umgestellt und es funktioniert wunderbar! Vielen Dank für die tollen Erklärungen, das hat mir wirklich weitergeholfen
Eine kleine Frage zu den imports hätte ich noch. In der Art, wie man diese schreibt scheinen die Meinungen stark auseinander zu gehen. Ich importiere das Skript mit den Klassen jetzt wie folgt:
from Classes import ClassA, ClassB, ClassC
Ist das so konform?
Eine kleine Frage zu den imports hätte ich noch. In der Art, wie man diese schreibt scheinen die Meinungen stark auseinander zu gehen. Ich importiere das Skript mit den Klassen jetzt wie folgt:
from Classes import ClassA, ClassB, ClassC
Ist das so konform?
Sprich also Ziel von Python ist es, möglichst gut und einfach lesbaren Code zu produzieren?/me hat geschrieben:Ich empfinde das nicht als unleserlich oder gar falsch.AnyOne hat geschrieben:from Classes import ClassA, ClassB, ClassC
Ist das so konform?
Also wenn das nicht einfach nur ein Beispiel ist, sondern wirklich so in deinem Code steht, ist Classes doch schon ein recht merkwürdiger Name für ein Modul. Es sollte schon etwas aussagen und "da sind Klassen drin" ist keine ausreichende Aussage. Versuche es inhaltlicher, Beispiele findest du in der Standardbibliothek (auch stdlib genannt): http://docs.python.org/2/library/.
Das ist hier nur einfach ein Beispiel In meinem Code ist die Namensgebung natürlich aussagekräftiger. Hier sollen lediglich der Sinn bzw. meine Gedanken vermittelt werden. Trotzdem danke für den Hinweisderdon hat geschrieben:Also wenn das nicht einfach nur ein Beispiel ist, sondern wirklich so in deinem Code steht, ist Classes doch schon ein recht merkwürdiger Name für ein Modul. Es sollte schon etwas aussagen und "da sind Klassen drin" ist keine ausreichende Aussage. Versuche es inhaltlicher, Beispiele findest du in der Standardbibliothek (auch stdlib genannt): http://docs.python.org/2/library/.
"Readability counts."AnyOne hat geschrieben:Sprich also Ziel von Python ist es, möglichst gut und einfach lesbaren Code zu produzieren?
Hast du schon mal in der Python-Konsole import this eingetippt? Wenn nicht, dann hol es nach.
Ergänzend dazu findet man es in PEP-8 auch etwas formaler: Import in PEP-8.
Danke, wurde direkt nachgeholt/me hat geschrieben:"Readability counts."
Hast du schon mal in der Python-Konsole import this eingetippt? Wenn nicht, dann hol es nach.
Ergänzend dazu findet man es in PEP-8 auch etwas formaler: Import in PEP-8.
Wobei das mit der Lesbarkeit nicht auf Python beschränkt ist. Das sollte eigentlich immer das Ziel vom Programmierer sein, unabhängig von der Programmiersprache. Code Golf und Obfuscation-Wettbewerbe mal ausgenommen.