作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在国外图书馆有一本A类
。
class A:
def __init__(self, a: int):
self.a = a
我想用 A
扩展一个 class B
,比如:
import attr
@attr.s
class B(A):
b: int = attr.ib()
代码似乎有效:
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 不开心。
> mypy file.py
error: Unexpected keyword argument "a" for "B"
最佳答案
我有理由相信 MyPy attrs 插件不支持这些
。
由于您没有调用 super
,惯用的方法是将 a
定义为 B
的属性,这样 attrs 就可以使用照顾它。
JFTR:如果您使用@attr.define
或@attr.s(auto_attribs=True)
,您可以省略attr.ib()
调用。
关于python - 如何用 python-attrs 构造解决 "unexpected keyword argument",让 mypy 开心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69593824/
我是一名优秀的程序员,十分优秀!