# 动物园# 老虎 tiger 走路 游泳# 天鹅 swan 走路 游泳 飞# 老鹰 oldying 飞 走路from abc import abstractmethod, ABCMeta# 接口的多继承# 接口类class Swim_Animal(metaclass=ABCMeta): # 游泳 @abstractmethod def swim(self): # 被继承的子类必须实现,如果子类不实现,那子类在实例化时将会报错 passclass Walk_Animal(metaclass=ABCMeta): # 走 @abstractmethod def walk(self): passclass Fly_Animal(metaclass=ABCMeta): # 飞 @abstractmethod def fly(self): passclass Tiger(Walk_Animal, Swim_Animal): # 老虎类,继承走、游泳接口类,则必须实现走与游泳接口,否则实例化时报错 def walk(self): pass def swim(self): passclass Oldying(Fly_Animal, Walk_Animal): passclass Swan(Swim_Animal, Walk_Animal, Fly_Animal): pass# 接口隔离原则:使用多个专门的接口,而不使用单一的总接口。即客户端不应该依赖那些不需要的接口 # 上面的例子刚好满足接口隔离原则# 接口类的使用场景:实现一个类时,想要规范这个类中哪些函数是必须要实现的,如果不实现在实例化时就进行报错,这种场景下可以用接口类进行规范 # 将类必须要实现的方法,写在一个接口类中,然后那个类去继承这个接口,如果那个类没有实现接口规定的方法,则实例化时报错