从 类 的变量数组继承时,有没有办法让 Python 代码完成工作?

Is there a way to have Python code completion work when inheriting from a variable array of classes?

我正在开发一个模板化和可扩展的 python 库,我想做这样的事情:

registered_features = [
    feature1.feature.Support,
    feature2.feature.Support,
    feature3.feature.Support,
]

其中每个引用 class 的目录结构如下:

feature1
--feature.py

feature.py 里面是

class Support:
    def someExtendedFunctionality(self):
        ....

那我就这样继承一切:

class App(*registered_features):
    def __init__(self):
        ....

运行时一切正常,但我遇到的问题是代码完成,我没有得到关于“registered_features”

的建议

我有什么方法可以让它工作吗?我猜代码完成是一种静态分析,扩展该列表是一种运行时操作。有没有不同的方法来做这样的事情?

我假设 registered_features 中的 classes 没有改变,并且您将其用作静态对象来保存 classes 的列表。如果不是,并且它在 运行 时间内发生变化,静态分析将无法帮助完成代码。

因此,假设它是静态的 class,您可以将其替换为:

class RegisteredFeatures(SupportA, SupportB, SupportC):
    pass


class App(RegisteredFeatures):
    pass

不是使用列表对象来保存所有 classes,而是使用 class 来做几乎相同的事情。我对此进行了测试,代码完成适用于 Pycharm 2021.2.3