其他分享
首页 > 其他分享> > 第21节课:面向对象高阶

第21节课:面向对象高阶

作者:互联网

# 第二十一节课:面向对象高阶:
'''
本节课大纲:
1- 商城案例实战
2- 对象的继承
3- 方法的重写
'''
# 1- 商城案例实战:
'''
需求:
用户基数比较大,很多老VIP需要一个更高的权限--SVIP:所有VIP的用户权限它都有
解决方案:
--方案:扩展需求业务:之前VIP权限不能动,只是在已有的业务,新增一个SVIP群体用户
--解决方案︰
c
方案:扩展需求业务:之前VIP权限不能动,只是在已有的业务,新增一个SVIP群体用户
版本v6.0
VIP 用户--类
权限:折扣8折、生日券、礼品券
购买行为:全国包邮
SVIP 用户--类入会费:600
权限:折扣8折、生日券、礼品券、金额、理财服务-
购买行为:全国包邮+礼品---一年有5次机会
***业务的扩展---继承
'''
# *** 对象的继承--- 什么叫继承?
'''
继承的作用:
业务扩展,新业务的一些功能跟老业务有相同点,继承老业务的类,减少代码量
python里面对象的继承:
class SubClassName (Parentclass1[,Parentclass2,...]):
'optional class documentation string'
class_suite
>括号里面的是被继承的类,叫做父类(或者基类),
SubClassName是继承类,叫做子类(或者继承类)
>父类可以有多个(多重继承)
'''
# 继承的写法:
# class Tiger:
# nickName='老虎'
# __age=20 #这是私有的,无法直接继承
# #判断应该定义什么实例属性还是静态属性,就看这个属性是否和每个个体有关,这里每只老虎的体重都不一样,所有要定义实例属性
# def __init__(self,weight):
# self.tweight=weight
# #判断要定义实例方法还是静态方法,同样要方法是否涉及每个实例,这里每个老虎叫都只减少自己的体重,多以用实例方法
# def roar(self):
# print('我是老虎,wow!!体重减5斤')
# self.tweight -= 5
# def feed(self,food):
# if food=='meat':
# self.tweight += 10
# print('恭喜,虎虎喂食正确,体重加10斤!')
# else:
# self.tweight -= 10
# print('阿欧,喂食失误,体重减十斤!')
# # # 如上是老虎的类,现在要写一个华南虎的类,继承老虎的所有特性:
# # class SouTiger(Tiger): #创建类的时候直接把父类写在括号里就继承好了
# # pass #至此,继承完成
# se=SouTiger(100) #子类没有自己的__init__方法,直接继承的父类的weight
# print(se.nickName,se.tweight) #打印得:老虎 100
# se.feed('meat')
# print(se.tweight)
'''
继承:
1- 如果子类没又__init__方法,会自动调用父类的__init__
2- 在父类的实例属性不够用的时候,子类自己有__init__方法,不会自动调用,就意味着不能自动调用
如果话需要继承,手动调用
方法的重写:是多态一种体现
一个方法在父类和子类有不同的操作
什么时候使用重写:父类有一个方法a,但是子类去继承,发现a方法不满足子类,为了保持
整体一个模式,会重写这个方法,适合子类
'''
# class Shouth(Tiger):
# ##多继承: class South(Tiger,Sheep)
# def __init__(self,weight,name):
# Tiger.__init__(self,weight) #super
# self.weight=weight
# self.name=name
# setiger=Shouth(120,'tom') #这样,就不光有父类的特性,还有子类自己的特性
# print(setiger.nickName,setiger.weight,setiger.name) #打印得:老虎 120 tom

# 3-方法的重写:商城的案例-SVIP继承VIP
'''
VIP 用户--类
权限:折扣8折、生日券、礼品券
购买行为:全国包邮
SVIP 用户--类入会费:600
权限:折扣8折、生日券、礼品券、金额、理财服务-
购买行为:全国包邮+礼品---一年有5次机会
'''
class Vipcustomer():#VIP
we1fare = "商品8折优惠+生日礼券"
def __init__(self,inName,inprice):
self.name=inName
self.price=inprice
def shopping(self):
print('---VIP用户***江浙泸包邮---')
class Svip(Vipcustomer):
def __init__(self,inName,inprice,inzhekou):
Vipcustomer.__init__(self,inName,inprice)
self.zk=inzhekou
def shopping(self):
print('---SVIP用户全国包邮+每年5次礼品赠送')##这就是方法的重写
s1=Svip('TOM',678,5)
print(s1.inprice)
# sv=Svip('耐克',100,'八折')
# sv.shopping() #打印得:---SVIP用户全国包邮+每年5次礼品赠送
#---------1.选择登陆级别----------
# userLevel = input('VIP用户请输入:1 , SVIP用户请输入2')
# if userLevel=='1':
# inName,inprice=input('---<欢迎VIP用户登录>---,请输入:姓名,总花费:').split(',')
# vip1=Vipcustomer(inName,int(inprice.strip()))
# vip1.shopping()
# elif userLevel == '2':
# name,price,zk=input('---SVIP用户欢迎回家---,请输入:用户名,总花费,等级').split(',')
# svip1=Svip(inName,int(inprice.strip()),int(inzhekou.strip()))
# for one in range(1,4): #0,1,2,3
# if one > 2:
# print('Svip只有三次购物超级福利机会,已经使用完毕')
# super(Svip,svip1).shopping() #使用父类的shopping
# #需要调用父类被重写的方法:
# #super(子类类名,子类的实例名).方法()
# else:
# svip1.shopping() #子类的shopping()
# else:
# print('暂时没有找到这个权限的客户')

标签:__,21,继承,子类,self,面向对象,print,节课,父类
来源: https://www.cnblogs.com/66-liu/p/14059283.html