-1
En utilisant Python 2.7, le code suivant fonctionne:Python 3 génère l'erreur vs Python 2 en utilisant décoratrice
def AddHex(old_class):
old_class.__hex__ = lambda self: 'I am a hex!'
return old_class
@AddHex
class AClass(object):
"""'Empty' class"""
pass
a = AClass()
print hex(a)
sortie:
I am a hex!
En utilisant Python 3.6, je reçois le texte suivant erreur:
TypeError: 'AClass' object cannot be interpreted as an integer
Comment rendre ce code compatible avec Python 3.6?
Pouvez-vous donner full stacktrace pour erreur? – Nilesh
Python 3 n'a pas de méthode '__hex__'. Du tout. Ce n'est pas un problème de décorateur; vous auriez pu tester cela sans le décorateur ;-) –