我需要为覆盖`@ abstractmethod`s的方法提供类型提示吗?

问题描述

给出这两个类:

class MyClass(ABC):
    @abstractmethod
    def my_method(self,my_parameter: str):
        pass
    
class MySecondClass(MyClass):
    def my_method(self,my_parameter): 
        pass

my_parameter的{​​{1}}中的my_method是否具有基于PEP 484的推断类型MySecondClassAny?在链接文档中找不到详细说明上述内容的示例。

解决方法

它是DECLARE @FormulaString NVARCHAR(100) = 'SELECT @a + @b'; EXEC sp_executesql @FormulaString,N'@a int,@b int',@a=3,@b=6; 。您可以通过运行mypy进行尝试:

Any

Withwithout --check-untyped-defs flag,这会通过类型检查,并且reveal_type报告from abc import ABC,abstractmethod class MyClass(ABC): @abstractmethod def my_method(self,my_parameter: str): pass class MySecondClass(MyClass): def my_method(self,my_parameter): reveal_type(my_parameter) pass MySecondClass().my_method(3) 作为类型。 (没有该标志,方法主体的类型检查也将被跳过。)


请注意,即使具有注释,只要覆盖方法的签名更宽松,则允许覆盖方法具有与覆盖方法不同的签名即可。例如,采用Any的方法可以覆盖采用Animal的方法。