欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

python 抽象类,抽象方法,主动约束

问题:你想定义一个结构或者抽象类,来确保子类实现了某些特定的方法

解决方法一:

class BaseMsg(object):

    def send(self):
        raise NotImplemented('send() must be override')


class WeChat(BaseMsg):

    def send(self):
        pass


class Msg(BaseMsg):

    def send(self):
        pass


class Email(BaseMsg):
    def send(self):
        pass

以上写法在python源码中较多,也是在做类型约束时比较常用的一种做法。

解决方法二:

使用abc模块,可以很轻松的定义抽象基类

from abc import ABCMeta, abstractmethod


class BaseMsg(metaclass=ABCMeta):

    @abstractmethod
    def send(self, x):
        pass


class WeChat(BaseMsg):

    def send(self, x):
        pass


class Email(BaseMsg):

    def send(self, x):
        pass

抽象类的一个特点是它不能直接被实例化

抽象类的目的就是让别的类继承它并实现特定的抽象方法

 

posted on 2018-08-31 16:38  Louiszj  阅读(97)  评论(0编辑  收藏  举报

导航