• 第21节课:面向对象高阶


      1 # 第二十一节课:面向对象高阶:
      2 '''
      3 本节课大纲:
      4 1- 商城案例实战
      5 2- 对象的继承
      6 3- 方法的重写
      7 '''
      8 # 1- 商城案例实战:
      9 ''' 
     10 需求:
     11 用户基数比较大,很多老VIP需要一个更高的权限--SVIP:所有VIP的用户权限它都有
     12 解决方案:
     13 --方案:扩展需求业务:之前VIP权限不能动,只是在已有的业务,新增一个SVIP群体用户
     14 --解决方案︰
     15 c
     16 方案:扩展需求业务:之前VIP权限不能动,只是在已有的业务,新增一个SVIP群体用户
     17 版本v6.0
     18     VIP 用户--类
     19       权限:折扣8折、生日券、礼品券
     20       购买行为:全国包邮
     21     SVIP 用户--类入会费:600
     22       权限:折扣8折、生日券、礼品券、金额、理财服务-
     23       购买行为:全国包邮+礼品---一年有5次机会
     24 ***业务的扩展---继承
     25 '''
     26 # *** 对象的继承--- 什么叫继承?
     27 ''' 
     28 继承的作用:
     29     业务扩展,新业务的一些功能跟老业务有相同点,继承老业务的类,减少代码量
     30 python里面对象的继承:
     31 class SubClassName (Parentclass1[,Parentclass2,...]):
     32     'optional class documentation string'
     33     class_suite
     34 >括号里面的是被继承的类,叫做父类(或者基类),
     35     SubClassName是继承类,叫做子类(或者继承类)
     36 >父类可以有多个(多重继承)
     37 '''
     38 # 继承的写法:
     39 # class Tiger:
     40 #     nickName='老虎'
     41 #     __age=20 #这是私有的,无法直接继承
     42 #     #判断应该定义什么实例属性还是静态属性,就看这个属性是否和每个个体有关,这里每只老虎的体重都不一样,所有要定义实例属性
     43 #     def __init__(self,weight):
     44 #         self.tweight=weight
     45 #     #判断要定义实例方法还是静态方法,同样要方法是否涉及每个实例,这里每个老虎叫都只减少自己的体重,多以用实例方法
     46 #     def roar(self):
     47 #         print('我是老虎,wow!!体重减5斤')
     48 #         self.tweight -= 5
     49 #     def feed(self,food):
     50 #         if food=='meat':
     51 #             self.tweight += 10
     52 #             print('恭喜,虎虎喂食正确,体重加10斤!')
     53 #         else:
     54 #             self.tweight -= 10
     55 #             print('阿欧,喂食失误,体重减十斤!')
     56 # # # 如上是老虎的类,现在要写一个华南虎的类,继承老虎的所有特性:
     57 # # class SouTiger(Tiger):  #创建类的时候直接把父类写在括号里就继承好了
     58 # #     pass                #至此,继承完成
     59 # se=SouTiger(100)   #子类没有自己的__init__方法,直接继承的父类的weight
     60 # print(se.nickName,se.tweight)   #打印得:老虎  100
     61 # se.feed('meat')
     62 # print(se.tweight)
     63 ''' 
     64 继承:
     65     1- 如果子类没又__init__方法,会自动调用父类的__init__
     66     2- 在父类的实例属性不够用的时候,子类自己有__init__方法,不会自动调用,就意味着不能自动调用
     67         如果话需要继承,手动调用
     68 方法的重写:是多态一种体现
     69     一个方法在父类和子类有不同的操作
     70     什么时候使用重写:父类有一个方法a,但是子类去继承,发现a方法不满足子类,为了保持
     71     整体一个模式,会重写这个方法,适合子类
     72 '''
     73 # class Shouth(Tiger):
     74 # ##多继承: class South(Tiger,Sheep)
     75 #     def __init__(self,weight,name):
     76 #         Tiger.__init__(self,weight)  #super
     77 #         self.weight=weight
     78 #         self.name=name
     79 # setiger=Shouth(120,'tom')  #这样,就不光有父类的特性,还有子类自己的特性
     80 # print(setiger.nickName,setiger.weight,setiger.name) #打印得:老虎 120 tom
     81 
     82 # 3-方法的重写:商城的案例-SVIP继承VIP
     83 ''' 
     84     VIP 用户--类
     85       权限:折扣8折、生日券、礼品券
     86       购买行为:全国包邮
     87     SVIP 用户--类入会费:600
     88       权限:折扣8折、生日券、礼品券、金额、理财服务-
     89       购买行为:全国包邮+礼品---一年有5次机会
     90 '''
     91 class Vipcustomer():#VIP
     92     we1fare = "商品8折优惠+生日礼券"
     93     def __init__(self,inName,inprice):
     94         self.name=inName
     95         self.price=inprice
     96     def shopping(self):
     97         print('---VIP用户***江浙泸包邮---')
     98 class Svip(Vipcustomer):
     99     def __init__(self,inName,inprice,inzhekou):
    100         Vipcustomer.__init__(self,inName,inprice)
    101         self.zk=inzhekou
    102     def shopping(self):
    103         print('---SVIP用户全国包邮+每年5次礼品赠送')##这就是方法的重写
    104 s1=Svip('TOM',678,5)
    105 print(s1.inprice)
    106 # sv=Svip('耐克',100,'八折')
    107 # sv.shopping() #打印得:---SVIP用户全国包邮+每年5次礼品赠送
    108 #---------1.选择登陆级别----------
    109 # userLevel = input('VIP用户请输入:1 , SVIP用户请输入2')
    110 # if userLevel=='1':
    111 #     inName,inprice=input('---<欢迎VIP用户登录>---,请输入:姓名,总花费:').split(',')
    112 #     vip1=Vipcustomer(inName,int(inprice.strip()))
    113 #     vip1.shopping()
    114 # elif userLevel == '2':
    115 #     name,price,zk=input('---SVIP用户欢迎回家---,请输入:用户名,总花费,等级').split(',')
    116 #     svip1=Svip(inName,int(inprice.strip()),int(inzhekou.strip()))
    117 #     for one in range(1,4): #0,1,2,3
    118 #         if one > 2:
    119 #             print('Svip只有三次购物超级福利机会,已经使用完毕')
    120 #             super(Svip,svip1).shopping()  #使用父类的shopping
    121 #             #需要调用父类被重写的方法:
    122 #             #super(子类类名,子类的实例名).方法()
    123 #         else:
    124 #             svip1.shopping() #子类的shopping()
    125 # else:
    126 #     print('暂时没有找到这个权限的客户')
  • 相关阅读:
    javascript中的光标
    jQuery插件使用大全
    marginCollapse之兄弟关系的DIV
    margin collapse 之父子关系的DIV
    选择符优先级-----:link伪类
    a标签包input引起的问题
    关于inline-block的间隙问题
    创意输入框
    Unity3D教程宝典之Shader篇:第十四讲Surface Shader
    Unity3D教程宝典之Shader篇:第十三讲 Alpha混合
  • 原文地址:https://www.cnblogs.com/66-liu/p/14059283.html
Copyright © 2020-2023  润新知