我正在尝试为基类中的无(字面值为无)方法添加类型化,但子类可以使用静态方法实现它。到目前为止,我所拥有的如下:
class BaseClass:
attr: ClassVar[Optional[Callable[[str], None]]] = None
class ChildClass1(BaseClass):
pass
class ChildClass2(BaseClass):
@staticmethod
def attr(s: str):
return "hello"
这是我期望的工作,但 mypy 正在抛出:
test.py:14: error: Signature of "attr" incompatible with supertype "BaseClass" [override]
有趣的是,如果函数没有参数,它会起作用:
class BaseClass:
attr: ClassVar[Optional[Callable[[], None]]] = None
class ChildClass2(BaseClass):
@staticmethod
def attr():
return "hello"