python -------继承 接口类
2021-07-10 15:06
标签:super wechat abs 多继承 str -- html 父类 abc -----------------------------------接口类------------------------------------------------------------ 面向对象资料地址 https://www.cnblogs.com/Eva-J/articles/7293890.html python -------继承 接口类 标签:super wechat abs 多继承 str -- html 父类 abc 原文地址:https://www.cnblogs.com/xiangrikuidebuluo/p/9561294.html# 单继承 *****
# 先抽象再继承,几个类之间的相同代码抽象出来,成为父类
# 子类自己没有的名字,就可以使用父类的方法和属性
# 如果子类自己有,一定是先用自己的
# 在类中使用self的时候,一定要看清楚self指向谁
# 多继承 ***
# 新式类和经典类:
# 多继承寻找名字的顺序 : 新式类广度优先,经典类深度优先
# 新式类中 有一个类名.mro方法,查看广度优先的继承顺序
# python3中 有一个super方法,根据广度优先的继承顺序查找上一个类
# java : 面向对象编程
# 设计模式 —— 接口
# 接口类 : python原生不支持
# 抽象类 : python原生支持的
from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta): # 元类 默认的元类 type
#metaclass =ABCMeta 意味着下面要写一个规范类。
@abstractmethod
def pay(self,money):pass # 没有实现这个方法
# 规范 :接口类或者抽象类都可以
# 接口类 支持多继承,接口类中的所有的方法都必须不能实现 —— java
# 抽象类 不支持多继承,抽象类中方法可以有一些代码的实现 —— java
class Wechat(Payment):
def pay(self,money):
print(‘已经用微信支付了%s元‘%money)
class Alipay(Payment):
def pay(self,money):
print(‘已经用支付宝支付了%s元‘ % money)
class Applepay(Payment):
def pay(self,money):
print(‘已经用applepay支付了%s元‘ % money)
def pay(pay_obj,money): # 统一支付入口
pay_obj.pay(money)
# wechat = Wechat()
# ali = Alipay()
app = Applepay()
# wechat.pay(100)
# ali.pay(200)
上一篇:判断一个对象是不是数组