Wird super() gebrochen in Python-2.x?

Es ist oft gesagt, dass super sollte vermieden in Python 2. Ich gefunden habe in meiner Verwendung von super in Python 2 dass es nie wieder so handelt, wie ich erwarte, wenn ich alle Argumente-wie das Beispiel:

super(ThisClass, self).some_func(*args, **kwargs)

Scheint es mir, diese Niederlagen der Zweck der Verwendung super(), es ist weder kürzer, oder viel besser als TheBaseClass.some_func(self, *args, **kwargs). Für die meisten Zwecke method resolution order ist ein fernes Märchen.

  • Andere als die Tatsache, dass 2.7 ist das Letzte major release zu Python 2, warum funktioniert super bleiben, gebrochen in Python 2?
  • Wie und warum hat Python 3 ist super geändert? Gibt es irgendwelche Vorbehalte?
  • Wann und warum sollte ich super vorwärts gehen?
  • Sie nicht geben Sie irgendein Beispiel, warum Sie denken, dass Sie super ist gebrochen, außer, dass es nicht kürzer als der Aufruf der Basisklasse explizit die weder hier noch dort... Sie offensichtlich nicht verstehen, was " super() ist ein (up-Aufruf sicher mit Mehrfachvererbung).
  • Das wäre subjektiv und unscharf ist nicht Teil meines namens 🙂
  • Gut, Nein. "Broken" ist nicht ein subjektiver Begriff und super ist notwendig, in einigen Fällen. So brauchen Sie sich nicht zu erklären, warum Sie denken, dass Sie super ist gebrochen (anders als durch Verweis zu einem Artikel, nicht sagen, dass) und Sie zeigen keine Erscheinung, zu verstehen, was super ist (Tipp: es ist nicht das äquivalent der alternative, die Sie zeigen).
  • Wenn Sie sagen, dass TheBaseClass.some_func(self, *args, **kwargs) ist besser als super Sie sind unter der Annahme, dass TheBaseClass ist immer der Vorfahr von ThisClass die möglicherweise nicht der Fall sein, wenn Sie mehrfache Vererbung (oder jemand fügt es danach). Es könnte sein, dass super(ThisClass, self) löst etwas anderes als TheBaseClass. super(). Die Frage ist also: wollen Sie zum aufrufen der "next guy" in der Kette (wahrscheinlich) oder Ihr anrufen möchten TheBaseClass genau.
InformationsquelleAutor Matt Joiner | 2011-02-21
Schreibe einen Kommentar