1. 程式人生 > 實用技巧 >父類對子類方法名的約束(晚上重寫優化)

父類對子類方法名的約束(晚上重寫優化)

# 普通的類
# 抽象類 是一個開發的規範 約束它的所有子類必須實現一些和它同名的方法
# 支付程式
# 微信支付 url連線,告訴你引數什麼格式
# {'username':'使用者名稱','money':200}
# 支付寶支付 url連線,告訴你引數什麼格式
# {'uname':'使用者名稱','price':200}
# 蘋果支付
# class Payment: # 抽象類
# def pay(self,money):
# '''只要你見到了專案中有這種類,你要知道你的子類中必須實現和pay同名的方法'''
# raise NotImplementedError('請在子類中重寫同名pay方法')
#
# class Alipay(Payment):
# def __init__(self,name):
# self.name = name
# def pay(self,money):
# dic = {'uname':self.name,'price':money}
# # 想辦法呼叫支付寶支付 url連線 把dic傳過去
# print('%s通過支付寶支付%s錢成功'%(self.name,money))
#
# class WeChat(Payment):
# def __init__(self,name):
# self.name = name
# def pay(self,money):
# dic = {'username':self.name,'money':money}
# # 想辦法呼叫微信支付 url連線 把dic傳過去
# print('%s通過微信支付%s錢成功'%(self.name,money))
#
# class Apple(Payment):
# def __init__(self,name):
# self.name = name
# def pay(self,money):
# dic = {'name': self.name, 'number': money}
# # 想辦法呼叫蘋果支付 url連線 把dic傳過去
# print('%s通過蘋果支付%s錢成功' % (self.name, money))

# aw = WeChat('alex')
# aw.pay(400)
# aa = Alipay('alex')
# aa.pay(400)
# 歸一化設計
# def pay(name,price,kind):
# if kind == 'Wechat':
# obj = WeChat(name)
# elif kind == 'Alipay':
# obj = Alipay(name)
# elif kind == 'Apple':
# obj = Apple(name)
# obj.pay(price)
#
# pay('alex',400,'Wechat')
# pay('alex',400,'Alipay')
# pay('alex',400,'Apple')

# appa = Apple('alex')
# appa.fuqian(500)


# 實現抽象類的另一種方式,約束力強,依賴abc模組
# from abc import ABCMeta,abstractmethod
# class Payment(metaclass=ABCMeta):
# @abstractmethod
# def pay(self,money):
# '''只要你見到了專案中有這種類,你要知道你的子類中必須實現和pay同名的方法'''
# raise NotImplementedError('請在子類中重寫同名pay方法')
#
# class Alipay(Payment):
# def __init__(self,name):
# self.name = name
# def pay(self,money):
# dic = {'uname':self.name,'price':money}
# # 想辦法呼叫支付寶支付 url連線 把dic傳過去
# print('%s通過支付寶支付%s錢成功'%(self.name,money))
#
# class WeChat(Payment):
# def __init__(self,name):
# self.name = name
# def pay(self,money):
# dic = {'username':self.name,'money':money}
# # 想辦法呼叫微信支付 url連線 把dic傳過去
# print('%s通過微信支付%s錢成功'%(self.name,money))
#
# WeChat('alex')