493 votes

Python, appeler super constructeur

<pre><code></code><p><code></code>mais cela ne fonctionne pas</p></pre>

378voto

Ignacio Vazquez-Abrams Points 312628

``retourne un objet parent dans les classes de style nouveau:

53voto

Gabe Points 49718

Avec les classes de style ancien, ce serait ceci :

37voto

Daniel Stutzbach Points 20026

Une façon est d'appeler Un constructeur de la et pass self comme argument, comme suit:

class B(A):
    def __init__(self):
        A.__init__(self)
        print "hello"

L'avantage de ce style est qu'il est très très clair. Il a fait appel à Un constructeur de. L'inconvénient est qu'il n'a pas de poignée de diamant en forme de succession très bien, car vous risquez de l'appel de la base commune du constructeur de la classe deux fois.

Une autre façon est d'utiliser des super(), comme d'autres l'ont montré. Pour seul héritage, il fait la même chose que de vous laisser appeler le parent du constructeur.

Cependant, super() est un peu plus compliqué sous-le-capot et peut parfois être contre-intuitif dans l'héritage multiple situations. Sur le côté positif, super() peut être utilisé pour la poignée en forme de diamant à l'héritage. Si vous voulez connaître les détails de ce super ()", la meilleure explication que j'ai trouvé pour combien de super() fonctionne est ici (même si je ne suis pas nécessairement en approuvant que l'article de l'avis).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X