Mixin 方法 super() 调用在 PyCharm 中生成未解析的属性引用

问题描述 投票:0回答:1

在 PyCharm 中我有一些代码如下所示:

class Mixin:
    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs.update({'foo': 'bar'})
        return kwargs

linter 在

Unresolved attribute reference 'get_form_kwargs' for class 'object'
调用中提出了
super()
的问题。这个问题 100% 正确,但对 mixin 没有帮助。我们有很多 mixins 都具有这种
super()
模式。

我知道属性的解决方案,但不知道可以为这些未定义的类属性声明类型的方法。例如:

class Mixin:
    foo:str

我很好奇是否有类似的方法可以帮助 linter 识别 mixin。

谢谢!

python pycharm python-typing
1个回答
-3
投票

试试这个代码:

class Mixin:
    def get_form_kwargs(self):
        get_form_kwargs_method = getattr(super(), "get_form_kwargs")
        if get_form_kwargs_method and callable(get_form_kwargs_method):
            kwargs = get_form_kwargs_method()
        else:
            kwargs = {}
        kwargs.update({'foo': 'bar'})
        return kwargs

更新: 我非常感谢那些对此答案添加

-
的人的评论。这绝对解决了 pylint 问题。这并不简短和优雅,但你有 2 个选择:在 pylint 中禁用此检查或编写有效的代码。

© www.soinside.com 2019 - 2024. All rights reserved.