首页 > 解决方案 > Python Astroid(Pylint)类通过工厂时如何模仿继承?

问题描述

标签: pythonmetaprogrammingfactory-patternpylint

解决方案


如果你替换这个:

Model = declarative_base(cls=CustomBaseModel)

像这样:

def base_decorator(cls):
    return declarative_base(cls = cls)

@base_decorator
class Model(CustomBaseModel):
    pass

这将导致类似于以下执行顺序的结果:

class Model(CustomBaseModel):
    pass
Model = declarative_base(cls = Model)

这在功能上与您在示例代码中的直接调用相同,但它提供pylint了一个Model源自CustomBaseModel.


推荐阅读