如何使我的IDE识别动态添加的功能?

时间:2019-08-05 09:06:29

标签: python dynamic-programming

我目前正在用python开发动态软件系统。它包括在许多点​​使用依赖项注入,这是通过动态类属性实现的。我的目的是为一个类动态添加一个函数(使用setattr),这很好用。我唯一的问题是IDE(在我的情况下为PyCharm)对这些功能一无所知,并将其标记为“未解决的引用”。尽管脚本运行时没有错误,但是看起来不是很好,我希望IDE支持其他不了解这些功能的程序员。

这是我的意思的示例:

class A:
    def __init__(self, func_obj):
        setattr(self, 'custom_function', func_obj)

a = A(print) # Unresolved attribute reference 'custom_function' for class 'A' ...
a.custom_function('Hello World!')

按预期,此示例将打印“ Hello World!”。但是我发现这很丑陋,因为IDE在最后一行显示了警告,在那我称之为“ custom_function”。而且,如果您尝试使用鸭子输入来探索脚本,那么也不会自动完成。

所以让我问我一个问题:有什么方法可以告诉IDE此类中有一些动态添加的函数吗?也许可以通过某种方式使用元类或类似的方法……但是我在Google上找不到任何东西,我也不知道还有什么可以尝试的。

我希望你能帮助我:)

1 个答案:

答案 0 :(得分:1)

我有一个类似的请求,并直接向PyCharm Bug跟踪程序询问:PY-28326。我认为他们的答案也适用于您的问题:

  

PyCharm目前不支持动态添加到类中的方法。