python 抽象基类 abstractmethod

2019-12-03  本文已影响0人  SkTj

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

from abc import ABCMeta, abstractmethod

class IStream(metaclass=ABCMeta):
@abstractmethod
def read(self, maxbytes=-1):
pass

@abstractmethod
def write(self, data):
    pass

抽象类的一个特点是它不能直接被实例化,比如你想像下面这样做是不行的:

a = IStream() # TypeError: Can't instantiate abstract class
# IStream with abstract methods read, write
抽象类的目的就是让别的类继承它并实现特定的抽象方法:

class SocketStream(IStream):
def read(self, maxbytes=-1):
pass

def write(self, data):
    pass
上一篇 下一篇

猜你喜欢

热点阅读