Python中抽象方法的静态类型检查
如何确保实现抽象方法的方法符合python静态类型检查。如果所实现的方法的返回类型不正确,pycharm中是否有方法获取错误Python中抽象方法的静态类型检查,python,pycharm,Python,Pycharm,如何确保实现抽象方法的方法符合python静态类型检查。如果所实现的方法的返回类型不正确,pycharm中是否有方法获取错误 class Dog: @abc.abstractmethod def bark(self) -> str: raise NotImplementedError("A dog must bark") class Chihuahua(Dog): def bark(self): return 123 因此,对于上
class Dog:
@abc.abstractmethod
def bark(self) -> str:
raise NotImplementedError("A dog must bark")
class Chihuahua(Dog):
def bark(self):
return 123
因此,对于上面的代码,我想得到一些提示,我的吉娃娃有问题。不,没有(简单的)方法来强制执行
实际上,您的Chihuahua
没有任何问题,因为Python的duck类型允许您覆盖bark
的签名(参数和类型)。因此,Chihuahua.bark
返回一个int
是完全有效的代码(尽管不一定是好的做法,因为它违反了规则)。使用abc
模块根本不会改变这一点
要“强制”类型,只需将类型提示传递给新方法,这使其显式。它还会导致PyCharm显示警告
import abc
class Dog:
@abc.abstractmethod
def bark(self) -> str:
raise NotImplementedError("A dog must bark")
class Chihuahua(Dog):
def bark(self) -> str:
# PyCharm warns against the return type
return 123