【问题标题】:Python 3 generates error vs Python 2 using decorator [duplicate]Python 3 与 Python 2 使用装饰器生成错误 [重复]
【发布时间】: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__ 方法。完全没有。这不是装饰器问题;你可以在没有装饰器的情况下测试它;-)

标签: python version decorator


【解决方案1】:

你不能。

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

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2012-07-15
    • 2023-03-26
    • 2014-12-26
    • 2018-01-28
    相关资源
    最近更新 更多