-1
使用Python 2.7,下面的代码工作:Python 3中产生误差VS Python 2中使用装饰
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)
输出:
I am a hex!
使用Python 3.6,我得到以下错误:
TypeError: 'AClass' object cannot be interpreted as an integer
如何使这个代码符合Python 3.6?
你能给出完整的堆栈跟踪错误吗? – Nilesh
Python 3没有'__hex__'方法。完全一样。这不是装饰问题;你可以在没有装饰器的情况下进行测试;-) –