Ich frage mich, wann zu welcher Geschmack von Python 3 super() verwenden.Verwendung von Python 3 super()
Help on class super in module builtins:
class super(object)
| super() -> same as super(__class__, <first argument>)
| super(type) -> unbound super object
| super(type, obj) -> bound super object; requires isinstance(obj, type)
| super(type, type2) -> bound super object; requires issubclass(type2, type)
Bis jetzt habe ich nur super()
ohne Argumente verwendet und es funktionierte wie (von einem Java-Entwickler) erwartet.
Fragen:
- Was in diesem Zusammenhang bedeutet "gebunden"?
- Was ist der Unterschied zwischen gebundenen und ungebundenen Super-Objekt?
- Wann verwenden Sie
super(type, obj)
und wennsuper(type, type2)
? - Wäre es besser, die Superklasse wie in
Mother.__init__(...)
zu benennen?
Die Frage speziell über Python3 ist, sondern Blog-Posts-Serie Simionato sind über Python2 und erwähnen, dass * Der Vorteil ist, dass Sie den Namen des wiederholen vermeiden Klasse in der aufrufenden Syntax, da dieser Name im Mangelmechanismus von privaten Namen versteckt ist. Das ist in Python3 nicht mehr so, also ist zumindest dieser eine Vorteil veraltet. – gerrit