【发布时间】:2023-03-25 18:46:02
【问题描述】:
使用 Python 2.7,以下代码有效:
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' 对象不能被解释为整数
如何使此代码符合 Python 3.6?
【问题讨论】:
-
你能给出完整的堆栈跟踪错误吗?
-
Python 3 没有
__hex__方法。完全没有。这不是装饰器问题;你可以在没有装饰器的情况下测试它;-)