键入带参数和不带参数的可选静态方法

问题描述 投票:0回答:0

我正在尝试为基类中的无(字面值为无)方法添加类型化,但子类可以使用静态方法实现它。到目前为止,我所拥有的如下:

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"
python python-3.x mypy python-typing
© www.soinside.com 2019 - 2024. All rights reserved.