从 类 的变量数组继承时,有没有办法让 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
我正在开发一个模板化和可扩展的 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