如果我覆盖函数的__qualname__会发生什么

时间:2018-01-18 19:29:44

标签: python function repr

出于调试目的,我想要命名一些lambda函数,即查看__repr__字符串。 Possible to change a function's repr in python?为如何正确完成提供了一些很好的答案,但我确实想知道以下内容,"快速和肮脏"版本(我不会保留在生产代码中!):

我只是改变了功能' __qualname__。这是安全使用还是我不得不期待一些奇怪的副作用 - 如果是这样,为什么?即其他功能可能依赖于__qualname__

代码看起来有点像这样:

def make_listener(consumer):
    def listener(obj):
        if _is_doc_of_interest(obj, consumer):
            consumer.put(obj)
    listener.__qualname__ = f'listener({consumer})'
    return listener

并会生成一堆看起来像的函数:

[make_listener(c) for c in [MyObject(1), SomethingElse(True, 42, 'foo')]

> [
>     <function listener(MyObject(1))>,
>     <function listener(SomethingElse(True, 42, 'foo'))>
>  ]

同样,这只是为了调试的目的(因为我生成了大量的听众,并喜欢快速识别它们),但现在我很好奇,如果这实际上会产生任何副作用或我是否可以继续使用它进行快速调查

0 个答案:

没有答案