Python_day19(2018.7.27)-(抽象类,接口类,多态,封装)

今日内容大纲
01 抽象类,接口类
制定一个规范
02 多态
03 封装


抽象类,接口类
# 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 是对象名字
# obj.pay()
# w1 = Wechatpay(200)
# a1 = Alipay(200)
# j1 = Jdpay(100)
# pay(a1) # 归一化设计
# pay(j1)
#
# w1 = Wechatpay(300)
# w1.weixinpay()



---------------------抽象类,接口类----------------------
第一版  
# class Alipay:
# def __init__(self,money):
# self.money = money
#
# def pay(self):
# print('使用支付宝支付了%s' %self.money)
#
#
# class Jdpay:
# def __init__(self, money):
# self.money = money
#
# def pay(self):
# print('使用京东支付了%s' % self.money)

 # a1 = Alipay(200)
# a1.pay()
#
# j1 = Jdpay(100)
# j1.pay()

各个支付类都是单独的,实例化对象之后,对象各自调用类中的pay支付方法.

----------------第二版本-------------------

# class Alipay:
# def __init__(self,money):
# self.money = money
#
# def pay(self):
# print('使用支付宝支付了%s' %self.money)
#
#
# class Jdpay:
# def __init__(self, money):
# self.money = money
#
# def pay(self):
# print('使用京东支付了%s' % self.money)
# def pay(obj):
# obj.pay()
#
# a1 = Alipay(200)
# j1 = Jdpay(100)
# pay(a1) # 归一化设计
# pay(j1)


各个类还是单独的,但是对于类内部的支付方法pay是统一的命名规则,在最终结尾出单独定义一个pay函数,其中个传递的参数是支付类实例化出来的对象.
但是其中对于只用同样的pay支付方法,并没有强制要求.

------------------第三版------------------------

# 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()



--------------------鸭子类型-------------------------

# python没有多态?他有什么? 他有鸭子类型.
# 鸭子类型 : 看着像鸭子,他就是鸭子.

# 这些类 都互称为鸭子.

# class Str:
# def index(self):
# pass

# class List:
# def index(self):
# pass
#
# class Tuple:
# def index(self):
# pass


***比如说在str,List,Tuple这几个类型中,全部都含有index()这个方法,所以str,List,Tuple互相称伟鸭子类型.



 
 
 
 
 
 



转载于:https://www.cnblogs.com/kcwxx/p/9379608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值