我需要为覆盖`@ 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的方法。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...