接口类:python原生不支持,因为可以多继承
接口类默认多继承,所有的方法都必须不能实现(直接pass)------源于java
接口隔离原则:使用多个专门的接口而不使用单一的总接口,即客户端不应该依赖那些不需要的接口
抽象类:python原生支持
抽象类默认不支持多继承,可以实现部分方法 ------源于java
一般情况下单继承能实现的功能都是一样的,所以能在父类中写一些简单的实现
多继承的情况由于功能比较复杂,不容易抽象出相同的功能具体实现在父类中
python可以通过多继承来实现java的接口类,通过单继承实现java的抽象类
from abc import abstractmethod
from abc import ABCMeta
class Payment(metaclass=ABCMeta): # 接口类或者抽象类,规范类,建立子类规范
@abstractmethod
def pay(self, money):
pass
class Wechat(Payment):
def pay(self, money):
print('pay %s yuan in Wechat' %money)
class Ali(Payment):
def pay(self, money):
print('pay %s yuan in Alipay' %money)
class Apple(Payment):
pass
apple = Apple() # 在实例化时报错Can't instantiate abstract class Apple with abstract methods pay