【问题标题】:TypeError message uses name instead of qualnameTypeError 消息使用名称而不是 qualname
【发布时间】:2018-08-01 11:24:50
【问题描述】:

我发现以下行为:

>>> def f():
...     def g(a,b):
...         return a+b
...     return g
>>> f().__name__
... 'g'
>>> f().__qualname__
... 'f.<locals>.g'
>>> f()(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: g() missing 1 required positional argument: 'b'

我希望错误消息显示所涉及函数的__qualname__ 而不仅仅是__name__。自己编写此类消息时,这也是推荐的做法。

我可以对此做些什么吗(例如启动时的配置)? 还是这是一个错误/功能?

显示 qualname 会使调试更容易,尤其是在使用装饰器或 lambda 时。


python 3.6.1

【问题讨论】:

    标签: python python-3.x typeerror qualified-name


    【解决方案1】:

    这是不可配置的;它在解释器内部被硬编码。如果你对此有强烈的感觉,file a bug with the CPython folks。鉴于 __qualname__ 是一个较新的功能,他们可能没有考虑或考虑在这种情况下使用它。

    更新:看起来有a bug already filed,但在过去几年中没有看到任何活动。

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      相关资源
      最近更新 更多