Comme il n'y a pas réelle question dans la question, je vais t Ake it littéralement:
Quel est le problème de le faire dynamiquement?
Eh bien, il est pratiquement illisible, extrêmement opaque et non évident pour l'utilisateur de votre code (cela vous inclut dans un mois: P). De mon expérience (assez limitée, je dois admettre, malheureusement je n'ai pas 20 ans de programmation sous la ceinture), un besoin de telles solutions indique, que la structure de classe n'est pas bien définie, - signifie, il y a presque toujours une façon meilleure, plus lisible et moins mystérieuse de faire de telles choses. Par exemple, si vous vraiment souhaitez définir des classes de base à la volée, il est préférable d'utiliser une fonction usine, qui renverra les classes appropriées en fonction de vos besoins.
Une autre prise sur la question:
Quel est le problème de le faire dynamiquement?
Dans votre implémentation actuelle, il me donne une erreur "profondeur de récursivité maximale dépassée". Cela se produit, car A.__new__
s'auto-appelle de lui-même indéfiniment (puisqu'il hérite de lui-même et de B
).
10: A l'intérieur A.__new__
, "cls" est défini sur <class '.A'>
. A l'intérieur du constructeur, vous définissez une classe C
, qui hérite de cls
(qui est actuellement A
) et une autre classe B
. Lors de l'instanciation C
, son __new__
est appelée. Comme il ne définit pas son propre __new__
, sa classe de base '__new__
est appelée. La classe de base se trouve être A
.
20: GOTO 10
Quelle est la question? –
D'après quelle réponse? Vous manquez un lien? –
Roger, Dominic, Yup le lien était manquant. Maintenant mis à jour la question, de manière appropriée. –