使用 abc 模块可以很轻松的定义抽象基类:
from abc import ABCMeta, abstractmethod
class IStream(metaclass=ABCMeta): @abstractmethod def read(self, maxbytes=-1): pass
代码语言:javascript复制@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
代码语言:javascript复制def write(self, data):
pass