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

v09wglhw  于 2022-11-08  发布在  PyCharm
关注(0)|答案(1)|浏览(171)

在PyCharm中,我有一些代码,看起来像这样:

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

linter在super()调用上引发了Unresolved attribute reference 'get_form_kwargs' for class 'object'的问题。这个问题100%正确,但是对mixin没有帮助。我们有很多mixin都有这个super()模式。
我知道一种针对属性而不是方法的解决方案,在这种解决方案中,您可以为这些未定义的类属性声明类型。例如:

class Mixin:
    foo:str

我很好奇,如果有什么类似的方法,帮助短绒识别mixins。
谢谢你!

np8igboo

np8igboo1#

请尝试以下代码:

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问题。这不是简短和优雅的,但是你有两个选择:请在pylint中禁用此检查或编写一个有效代码。

相关问题