Je ne pense pas, mais je pensais que je demanderais juste au cas où. Par exemple, pour une utilisation dans une classe qui encapsule un int:python a-t-il des opérateurs de conversion?
i = IntContainer(3)
i + 5
Et je ne suis pas seulement intéressé par cet exemple int, je cherchais quelque chose de propre et général, pas remplaçant tous les int et méthode de chaîne.
Merci, sunqiang. C'est juste ce que je voulais. Je n'avais pas réalisé que vous pouviez sous-classer ces types immuables (venant de C++).
class IntContainer(int):
def __init__(self,i):
#do stuff here
self.f = 4
def MultiplyBy4(self):
#some member function
self *= self.f
return self
print 3+IntContainer(3).MultiplyBy4()
Pas vraiment. Je cherchais quelque chose comme l'opérateur de conversion C++, qui remplace intelligemment l'objet conteneur par ce qu'il contient dans les expressions. – Alex
Cela échouera pour "5 + i", je crois. – ars
ars, vous avez raison, j'ai vu votre réponse et il me manque __radd__ ... Je suppose que maintenant c'est ok après avoir changé ma réponse ... –