Python 3使用装饰器生成错误与Python 2

时间:2017-03-03 18:52:14

标签: python version decorator

使用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?

1 个答案:

答案 0 :(得分:2)

你不能。

在Python 3中,hex查找返回整数__index__函数。您无法使用hex打印任意字符串。