10
votes

Python: extension int et mro pour __init__

en python, j'essaie d'étendre le type "INT" intégré. Ce faisant, je veux transmettre des arguments keywoard sur le constructeur, donc je le fais: xxx

Cependant, tout en appelant c (3) fonctionne bien, C (3, A = 4) donne: xxx

et c .__ MRO __ retourne le prévu: < Pré> xxx

mais il semble que Python essaie d'appeler int .__ init __ Premier ... Quelqu'un sait pourquoi? Est-ce un bug dans l'interprète?


0 commentaires

3 Réponses :


3
votes

vous devriez être remplacé "__ nouveau __" , pas "__ init __" car les INT sont immuables.


0 commentaires

7
votes

Les Docs pour le modèle de données Python Conseiller à l'aide de __ nouveau __ :

objet. nouveau (CLS [ ...])

nouveau () est principalement destiné à permettre aux sous-classes des types immuables (comme INT, STR ou TUPLE) de personnaliser la création d'instances. Il est également communément remplacé dans des métaclasses personnalisées afin de personnaliser la création de classe.

Quelque chose comme ça devrait le faire pour l'exemple que vous avez donné: xxx


0 commentaires

3
votes

Qu'est-ce que tout le monde (jusqu'à présent) dit. INT sont immuables, vous devez donc utiliser nouveau

Voir aussi (les réponses acceptées à):


0 commentaires