我想为数据类定义一个接口,但保留数据存储方式。为此,我A
为接口定义了一个协议和一个实现B
:
class A(Protocol):
@property
def field(self):
...
@field.setter
def field(self, value):
...
class B(A):
@property
def field(self):
return ""
@field.setter
def field(self, value):
pass
mypy
这个实现没有问题,但是 PyCharm 警告我
Type of 'field' is incompatible with 'A'
上述方法已在此答案中提出,但 PyCharm 并不太喜欢它。
我该怎样写这个比较好?
这是一个已知错误。PyCharm 的类型检查器总体上存在很多问题。在此处添加或
# noqa
评论# noinspection
,然后继续。然而,另一方面,协议可以而且应该变得通用,以便保留字段的类型: