第七章 面向对象程序设计

实例一:创建大雁类并定义飞行方法

  1. 代码:

class Geese:                   #创建大雁类

    "大雁类"

    def __init__(self,beak,wing,claw):        #构造方法

        print("我是大雁类!我有以下特征:")

        print(beak)            #输出喙的特征

        print(wing)            #输出翅膀的特征

        print(claw)            #输出爪子的特征

    def fly(self,state):          #定义飞行方法

        print(state)

'''*****************调用方法******************'''

beak_1 = '喙的基部较高,长度和头部的长度几乎相等'       #喙的特征

wing_1 = '翅膀长而尖'             #翅膀的特征

claw_1 = '爪子是蹼状的'        #爪子的特征

wildGoose = Geese(beak_1,wing_1,claw_1)        #创建大雁类的实例

wildGoose.fly("我飞行的时候,一会儿排成个人字,一会排成个一字")  #调用实例办法

  1. 结果:

我是大雁类!我有以下特征:

喙的基部较高,长度和头部的长度几乎相等

翅膀长而尖

爪子是蹼状的

我飞行的时候,一会儿排成个人字,一会排成个一字

 

 

实例二:通过类属性统计类的实例个数

  1. 代码:

class Geese:         

    "雁类"    

    neck = "脖子较长"     #类属性(脖子)

    wing = "振翅频率高"    #类属性(翅膀)

    leg = "腿位于身体的中心支点,行走自如"         #类属性(腿)

    number = 0             #编号

    def __init__(self):         #构造方法

        Geese.number +=1             #将编号加1

        print("\n我是第"+str(Geese.number)+"只大雁,我属于雁类!我有以下特征:")

        print(Geese.neck)            #输出脖子的特征

        print(Geese.wing)          #输出翅膀的特征

        print(Geese.leg)            #输出腿的特征

#创建4个雁类的对象(相当于有4只大雁)

list1 = []

for i in range(4):         #循环4次

    list1.append(Geese())       #创建一个雁类的实例

print("一共有"+str(Geese.number)+"只大雁")

  1. 结果:

我是第1只大雁,我属于雁类!我有以下特征:

脖子较长

振翅频率高

腿位于身体的中心支点,行走自如

 

我是第2只大雁,我属于雁类!我有以下特征:

脖子较长

振翅频率高

腿位于身体的中心支点,行走自如

 

我是第3只大雁,我属于雁类!我有以下特征:

脖子较长

振翅频率高

腿位于身体的中心支点,行走自如

 

我是第4只大雁,我属于雁类!我有以下特征:

脖子较长

振翅频率高

腿位于身体的中心支点,行走自如

一共有4只大雁

 

 

实例三:在模拟电影点播功能时应用属性

  1. 代码:

class TVshow:            #定义电视节目类

    list_film = ["战狼2","红海行动","西游记女儿国","熊出没·变形记"]

    def __init__(self,show):

        self.__show = show

    @property                 #将方法转换为属性

    def show(self):          #定义show()方法

        return self.__show   #返回私有属性的值

    @show.setter                #设置setter方法,让属性可修改

    def show(self,value):

        if value in TVshow.list_film:         #判断值是否在列表中

            self.__show = "您选择了《" + value + "》,稍后将播放" #返回修改的值

        else:

            self.__show = "您点播的电影不存在"

tvshow = TVshow("战狼2")            #创建类的实例

print("正在播放:《",tvshow.show,"》")   #获取属性值

print("您可以从",tvshow.list_film,"中选择要点播的电影")

tvshow.show = "红海行动"       #修改属性值

print(tvshow.show)          #获取属性值

  1. 结果:

正在播放:《 战狼2 》

您可以从 ['战狼2', '红海行动', '西游记女儿国', '熊出没·变形记'] 中选择要点播的电影

您选择了《红海行动》,稍后将播放

 

 

 

实例四:创建水果基类及其派生类

  1. 代码:

class Fruit:          #定义水果类(基类)

    color = "绿色"      #定义类属性

    def harvest(self,color):

        print("水果是:" + color +"的!") #输出的是形式参数color

        print("水果已经收获……")

        print("水果原来是:" + Fruit.color + "的!") #输出的是类属性color

class Apple(Fruit):         #定义苹果类(派生类)

    color = "红色"

    def __init__(self):

        print("我是苹果")

class Orange(Fruit):          #定义橘子类(派生类)

    color = "橙色"

    def __init__(self):

        print("\n我是橘子")

apple = Apple()       #创建类的实例(苹果)

apple.harvest(apple.color)  #调用基类的harvest()方法

orange = Orange()         #创建类的实例(橘子)

orange.harvest(orange.color)  #调用基类的harvest()方法

  1. 结果:

我是苹果

水果是:红色的!

水果已经收获……

水果原来是:绿色的!

 

我是橘子

水果是:橙色的!

水果已经收获……

水果原来是:绿色的!

 

 

实例五:在派生类中调用基类的__int__()方法定义类属性

  1. 代码:

class Fruit:          #定义水果类(基类)

    def __init__(self,color = "绿色"):

        Fruit.color = color   #定义类属性

    def harvest(self,color):

        print("水果是:" + color +"的!") #输出的是形式参数color

        print("水果已经收获……")

        print("水果原来是:" + Fruit.color + "的!") #输出的是类属性color

class Apple(Fruit):         #定义苹果类(派生类)

    color = "红色"

    def __init__(self):

        print("我是苹果")

        super().__init__()        #调用基类的__init__()方法

class Sapodilla(Fruit):

    def __init__(self,color):

        print("\n我是人参果")

        super().__init__(color)

    #重写harvest()方法的代码

    def harvest(self,color):

        print("人参果是:" + color + "的!")

        print("人参果已经收获……")

        print("人参果原来是:" + Fruit.color + "的!")

apple = Apple()

apple.harvest(apple.color)

sapodilla = Sapodilla("白色")

sapodilla.harvest("金黄色带紫色条纹")

       

  1. 结果:

我是苹果

水果是:红色的!

水果已经收获……

水果原来是:绿色的!

 

我是人参果

人参果是:金黄色带紫色条纹的!

人参果已经收获……

人参果原来是:白色的!

 

 

 

实战一:修改手机默认语言

  1. 代码:

class Phone:

    def __init__(self):    #定义无参构造方法

        print("智能手机的默认语言为英文")

    def changeLan(self,lan):#定义有参方法

        print("将智能手机的默认语言设置为" + lan)

 

change1 = Phone()

change2 = change1.changeLan("中文")

  1. 结果:

智能手机的默认语言为英文

将智能手机的默认语言设置为中文

 

 

实战二:给信用卡设置默认密码

  1. 代码:

class Xyk:

    def __init__(self):

        self.kahao = "4013735633800642"

        self.mima = "123456"

        print("信用卡" + self.kahao + "的默认密码为" + self.mima)

    def changeLan(self,lan):

        self.kahao = "4013735633800642"

        print("重置信用卡" + self.kahao + "的密码为" + lan)

change1 = Xyk()

change2 = change1.changeLan("168779")

  1. 结果:

信用卡4013735633800642的默认密码为123456

重置信用卡4013735633800642的密码为168779

 

 

实战三:打印每月销售明细

  1. 代码:

class SaleHandler:

    '''销售管理类'''

    def __init__(self):

        self.__sale_data = {

            "2":[('T0001','笔记本电脑'),

                 ('T0002','荣耀6X'),

                 ('T0003','ipad'),

                 ('T0004','荣耀V9'),

                 ('T0005','MACBook')]}     #{key:value}

    def querSaleList(self,query_month):

        '''根据输入月份,查询商品明细'''

        if query_month in self.__sale_data:

            print("%s月份商品销售明细如下:" % query_month)

            for item in self.__sale_data[query_month]:

                print("商品编号:%s 商品名称: %s " % item)

        else:

            print("该月份没有销售数据或输入的月份有误!")

print("-------------销售明细------------")

sh = SaleHandler()

while True:

    month = input("请输入要查询的月份(例如1、2、3等):")

    if month == 'quit':

        break

 

    sh.querSaleList(month)

                

  1. 结果:

-------------销售明细------------

请输入要查询的月份(例如1、2、3等):2

2月份商品销售明细如下:

商品编号:T0001 商品名称: 笔记本电脑

商品编号:T0002 商品名称: 荣耀6X

商品编号:T0003 商品名称: ipad

商品编号:T0004 商品名称: 荣耀V9

商品编号:T0005 商品名称: MACBook

请输入要查询的月份(例如1、2、3等):5

该月份没有销售数据或输入的月份有误!

请输入要查询的月份(例如1、2、3等):

posted @ 2022-10-27 09:26  3-1  阅读(71)  评论(0)    收藏  举报