python面向对象(抽象类,接口类)
python 中没有接口这个概念
接口类,抽象类就是制定一个规范
抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化
抽象类的本质还是类,指的是一组类的相似性,包括数据属性(如all_type)和函数属性(如read、write),而接口只强调函数属性的相似性
from abc import ABCMeta,abstractmethod #调用模块 class Payment(metaclass=ABCMeta): # 抽象类(接口类): @abstractmethod #装饰器 def pay(self): pass # 制定了一个规范 #@abstractmethod def func(self):pass class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' %self.money) class Jdpay(Payment): def __init__(self, money): self.money = money def pay(self): print('使用京东支付了%s' % self.money) class Wechatpay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用微信支付了%s' % self.money) def pay(obj): obj.pay() w1 = Wechatpay(200) a1 = Alipay(200) j1 = Jdpay(100) pay(a1) # 归一化设计 pay(j1) w1 = Wechatpay(300) w1.weixinpay()
定义了抽象类之后:
继承抽象类的子类中必须要含有抽象类中所有被装饰器装饰过的方法(函数),这样才可以运行