文章目录
案例一、构建一个银联信用卡的类
属性:
- 顾客姓名
- 信用卡授权额度
- 当前额度
- 单次刷卡金额上限
方法
- 分别获得上面属性的方法
- 对授权额度进行修改的方法
- 对单次刷卡金额上限进行修改的方法
- 实现刷卡的方法——传入一个刷卡金额,判断是否超过单次刷卡上限以及当前金额是否够用,如果够用,则执行刷卡,将当前额度减去刷卡金额
class UnionPayGreditCard():
"""构建银联信用卡类"""
def __init__(self, name, limit, current_limit, single_limit):
"""初始化银联银行卡的所有属性"""
self.name = name
self.limit = limit
self.current_limit = current_limit
self.single_limit = single_limit
def get_name(self):
"""获得顾客的名字"""
return self.name
def get_limit(self):
"""获得信用卡授权额度"""
return self.limit
def set_limit(self, new_limit):
"""对授权额度进行修改"""
self.limit = new_limit
print("你的授权额度修改为{}元".format(self.limit))
return self.limit
def get_current_limit(self):
"""获得信用卡当前额度"""
return self.current_limit
def get_single_limit(self):
"""获得单次刷卡金额上限"""
return self.single_limit
def set_single_limit(self, new_single_limit):
"""修改单次刷卡金额上限"""
self.single_limit = new_single_limit
print("你的单次刷卡金额上限修改为{}元".format(self.single_limit))
def use_card(self, cost):
"""刷卡"""
if cost <= self.single_limit and cost <= self.current_limit:
self.limit -= cost
print("你本次消费{}元,信用卡剩余{}元".format(cost, self.limit))
else:
print("你的消费无法支付,请查看额度")
# 创建信用卡实例,并执行调用相应的属性与方法
def main():
# 实例化
card = UnionPayGreditCard("Doggei",10000,5000,1000)
# 获取属性
name = card.get_name()
limit = card.get_limit()
current_linit = card.get_current_limit()
single_limit = card.get_single_limit()
print("name:{},\tlimit:{},\tcurrent_limit:{},\tsingle_limit:{}".
format(name,limit,current_linit,single_limit))
# 执行
card.set_limit(20000)
card.set_single_limit(10000)
card.use_card(1000)
card.use_card(150000)
if __name__ == '__main__':
main()
name:Doggei, limit:10000, current_limit:5000, single_limit:1000
你的授权额度修改为20000元
你的单次刷卡金额上限修改为10000元
你本次消费1000元,信用卡剩余19000元
你的消费无法支付,请查看额度
案例二:构造中国银行信用卡类
继承银联信用卡的类,并构造中国银行信用卡的类
- 实现对银联信用卡的继承
- 新增属性,中国银行信用卡积分、优惠商店列表
- 重写刷卡方法:传入消费店铺名称和消费金额,如果店铺名称在优惠商店列表内,则刷卡金额打95折;每消费10元,信用卡积分增加1分;保留父类刷卡方法的其他功能
- 新增如下方法:获取用户积分的方法;设置优惠店铺列表的方法
class UnionPayCreditCard():
"""构建银联信用卡类"""
def __init__(self, name, limit, current_limit, single_limit):
"""初始化银联银行卡的所有属性"""
self.name = name
self.limit = limit
self.current_limit = current_limit
self.single_limit = single_limit
def get_name(self):
"""获得顾客的名字"""
return self.name
def get_limit(self):
"""获得信用卡授权额度"""
return self.limit
def set_limit(self, new_limit):
"""对授权额度进行修改"""
self.limit = new_limit
print("你的授权额度修改为{}元".format(self.limit))
return self.limit
def get_current_limit(self):
"""获得信用卡当前额度"""
return self.current_limit
def get_single_limit(self):
"""获得单次刷卡金额上限"""
return self.single_limit
def set_single_limit(self, new_single_limit):
"""修改单次刷卡金额上限"""
self.single_limit = new_single_limit
print("你的单次刷卡金额上限修改为{}元".format(self.single_limit))
def use_card(self, cost):
"""刷卡"""
if cost <= self.single_limit and cost <= self.current_limit:
self.limit -= cost
print("你本次消费{}元,信用卡剩余多少元".format(cost, self.limit))
else:
print("你的消费无法支付,请查看额度")
class BankOfChinaCreditCard(UnionPayCreditCard):
"""中国银行信用卡的类,继承自银联信用卡的类"""
def __init__(self,name, limit, current_limit, single_limit,integral,discount_shop):
"""初始化中国银行信用卡的所有属性"""
super().__init__(name, limit, current_limit, single_limit)
self.integral = integral
self.discount_shop = discount_shop
def use_card(self,shop_name,cost):
"""方法的重写"""
if cost <= self.single_limit and cost <= self.current_limit \
and shop_name in self.discount_shop:
self.limit -= cost*0.95
self.integral += cost//10
print("你本次消费{}元,优惠{}元,信用卡剩余{}元,获得积分{},共有积分{}".
format(cost*0.95,cost*0.05, self.limit,cost//10,self.integral))
else:
print("你的消费无法支付,请查看额度")
def get_integral(self):
"""获取用户积分"""
return self.integral
def set_discount_shop(self,new_shop_name):
"""设置优惠商店列表的方法"""
self.discount_shop.append(new_shop_name)
return self.discount_shop
def main():
"""创建实例并执行"""
card = BankOfChinaCreditCard("Doggei",10000,5000,1000,0,
["小米旗舰店","华为旗舰店","惠普旗舰店"])
# 获取属性
name = card.get_name()
limit = card.get_limit()
current_linit = card.get_current_limit()
single_limit = card.get_single_limit()
integral = card.get_integral()
print("name:{},\tlimit:{},\tcurrent_limit:{},\tsingle_limit:{},integral:{}\t".
format(name, limit, current_linit, single_limit,integral))
# 执行
card.set_limit(20000)
card.set_single_limit(10000)
card.use_card("小米旗舰店",1000)
card.use_card("华为旗舰店",150000)
if __name__ == '__main__':
main()
name:Doggei, limit:10000, current_limit:5000, single_limit:1000,integral:0
你的授权额度修改为20000元
你的单次刷卡金额上限修改为10000元
你本次消费950.0元,优惠50.0元,信用卡剩余19050.0元,获得积分100,共有积分100
你的消费无法支付,请查看额度