day 21接口类 抽象类 封装
class Payment: # 抽象类,或者接口类:制定一个规范.
def pay(self):pass
class QQ(Payment):
def pay(self,money):
print('您用qq支付了%s元' % money)
class Ali(Payment):
def pay(self,money):
print('您用支付宝支付了%s元' % money)
class Wechat(Payment):
def pay(self,money):
print('您用微信支付了%s元' % money)
def pay(obj,money):
obj.pay(money) # a1.pay(200)
# q1 = QQ()
# a1 = Ali()
# pay(q1,100) # 统一化设计
# pay(a1,200)
# w1 = Wechat()
# pay(w1,500)
# 第五版 强制制定规范,如果未按照规范执行,就会报错.
from abc import ABCMeta,abstractmethod
class Payment(metaclass=ABCMeta): # 抽象类 接口类 规范和约束 metaclass指定的是一个元类
@abstractmethod
def pay(self):pass # 抽象方法
class QQ(Payment):
def pay(self,money):
print('您用qq支付了%s元' % money)
def ret(self):
print('支付失败....')
class Ali(Payment):
def pay(self,money):
print('您用支付宝支付了%s元' % money)
class Wechat(Payment):
def pay(self,money):
print('您用微信支付了%s元' % money)
def pay(obj,money):
obj.pay(money) # a1.pay(200)
q1 = QQ()
a1 = Ali()
w1 = Wechat()
# q1 = QQ()
# a1 = Ali()
# pay(q1,100) # 统一化设计
# pay(a1,200)
# w1 = Wechat()
# pay(w1,500)
# 用处: 在工作中,如果你要是规定几个类必须有一样的方法,
# 你要抽象类,制定一个规范,强制其有此方法.
# python没有多态的概念,但是python崇尚鸭子类型.
# 定义变量的方法:
#1,java c# 需要定义 类型. int i= 3
#2,java c# 没有多继承的概念.
# i = 1
# i = 'alex'
# 鸭子类型: 它看着像鸭子,那么他就是鸭子.
# str list tuple
str.index()
s1 = 'alex'
class Str:
def index(self):
pass
class List:
def index(self):
pass
class tuple:
def index(self):
pass
#python中好多不同类但同名的方法不是强制规定,而是约定俗成,像上面这三种类,都同样据有index方法,而且功能相似,
# 则 他们三个互称为鸭子.

浙公网安备 33010602011771号