gpt4 book ai didi

python - 如何用 python-attrs 构造解决 "unexpected keyword argument",让 mypy 开心?

转载 作者:行者123 更新时间:2023-12-05 05:54:42 26 4
gpt4 key购买 nike

我在国外图书馆有一本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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com