首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中抽象方法的静态类型检查

Python中抽象方法的静态类型检查
EN

Stack Overflow用户
提问于 2019-01-08 16:30:42
回答 1查看 1.7K关注 0票数 10

如何确保实现抽象方法的方法符合python静态类型检查。如果所实现的方法的返回类型不正确,pycharm中有没有办法得到一个错误?

代码语言:javascript
复制
class Dog:
    @abc.abstractmethod
    def bark(self) -> str:
        raise NotImplementedError("A dog must bark")

class Chihuahua(Dog):
    def bark(self):
        return 123

因此,对于上面的代码,我希望得到一些提示,即我的吉娃娃有问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 07:07:35

不,没有一种(简单的)方法来实施这一点。

实际上,您的Chihuahua没有任何问题,因为Python的鸭子类型允许您覆盖bark的签名(包括参数和类型)。因此,返回intChihuahua.bark是完全有效的代码(尽管不一定是好的做法,因为它违反了the LSP)。作为it doesn't enforce method signatures,使用abc模块根本不会改变这一点。

要“强制”该类型,只需将类型提示传递给新方法,从而使其显式。它还会导致PyCharm显示一个警告。

代码语言:javascript
复制
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
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54087885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档