TypeError消息使用名称而不是qualname

时间:2018-08-01 11:24:50

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

我发现以下行为:

>>> 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__。亲自编写此类消息时,这也是afaik的推荐做法。

我可以对此做任何事情(例如,启动时进行配置)吗? 还是这是错误/功能?

显示质量名称将使调试更加容易,尤其是在使用装饰器或lambda时。


python 3.6.1

1 个答案:

答案 0 :(得分:0)

这是不可配置的;它在解释器内部进行了硬编码。如果您对此有强烈的兴趣,请file a bug with the CPython folks。鉴于__qualname__是一个较新的功能,因此他们可能没有考虑或绕过这种情况。

更新:看起来好像a bug already filed,但是最近几年没有任何活动。