Je voudrais savoir comment l'héritage fonctionne pour int
, list
, string
et d'autres types immuables.Hériter des types immuables
En fait, je venais de héritez d'une classe comme ceci:
class MyInt(int):
def __init__(self, value):
?!?!?
Je ne peux pas à comprendre, comment puis-je régler la valeur comme elle est définie pour int
? Si je ne self.value = value
alors ma classe sera utilisé comme ceci:
mi = MyInt(5)
print(mi.value) # prints 5
Alors que je veux l'utiliser comme ceci:
mi = MyInt(5)
print(mi) # prints 5
Comment puis-je faire cela?
D'accord, c'est plus compliqué que je ne le pensais. Mais je comprends ce que ça fait. Pour python 3, je ne peux pas simplement utiliser 'super()' au lieu de 'super (MyInt, cls)'? Puis-je encore créer des méthodes et/ou d'autres attributs pour cela? –
Cet appel interne '__new__' devrait être' __new __ (cls, value) '. – poke
@PatrikLippojoki Oui, juste 'super()' devrait fonctionner correctement. Et les méthodes personnalisées fonctionnent exactement comme vous le souhaitez. Il suffit de noter que la valeur int réelle est accessible via simplement 'self' dans les méthodes. – poke