首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用python-attrs结构解决“意想不到的关键字参数”,让mypy高兴?

如何用python-attrs结构解决“意想不到的关键字参数”,让mypy高兴?
EN

Stack Overflow用户
提问于 2021-10-16 08:10:28
回答 1查看 210关注 0票数 3

我在国外的图书馆里有一本class A

代码语言:javascript
复制
class A:
    def __init__(self, a: int):
        self.a = a

我想用A扩展一个class B,如下所示:

代码语言:javascript
复制
import attr

@attr.s
class B(A):
    b: int = attr.ib()

代码似乎可以工作:

代码语言:javascript
复制
import attr

class A:
    def __init__(self, a: int):
        self.a = a

attr.s(these={
    "a": attr.ib(type=str)
}, init=True)(A)

@attr.s(kw_only=True)
class B(A):
    b: int = attr.ib()

if __name__ == "__main__":
    a = A(1)
    b = B(a=1, b=2)
    print(a)  # output: A(a=1) 
    print(b)  # output: B(a=1, b=2)

但是mypy/pyright并不开心。

代码语言:javascript
复制
> mypy file.py
error: Unexpected keyword argument "a" for "B"
EN

回答 1

Stack Overflow用户

发布于 2021-10-16 09:05:51

我相当确定MyPy attrs插件不支持these

由于您没有调用super,最常用的方法是将a定义为B上的一个属性,这样attrs就可以处理它了。

JFTR:如果您使用@attr.define@attr.s(auto_attribs=True),则可以省略attr.ib()调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69593824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档