第七章实例与实战

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

   在IDLE中创建一个名称为geese.py 的文件,然后在该文件中定义一个大雁类Geese,并定义一个构造方法,然后再定义一个实例方法fly(),该方法有两个参数,一个是self,另一个用于指定飞行状态,最后再创建大雁类的实例,并调用实例方法 fly()。

 

代码如下:

复制代码
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 = "爪子是璞状的"
whildGoose = Geese(beak_1, wing_1, claw_1)
whildGoose.fly("我飞行的时候,一会儿排成个人字,一会排成个一字")
复制代码

 

 运行结果如下:

 

 

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

   在 IDLE中创建一个名称为geese_a.py 的文件,然后在该文件中定义一个雁类Geese,并在该类中定义4个类属性,前3个用于记录雁类的特征,第4个用于记录实例编号,然后定义一个构造方法,在该构造方法中将记录实例编号的类属性进行加1操作,并输出4个类属性的值,最后通过for循环创建4个雁类的实例。

 

代码如下:

复制代码
class Geese:
    '''雁类'''
    neck = "脖子较长"
    wing = "振翅频率高"
    leg = "腿位于身体的中心支点,行走自如"
    number = 0
    def __init__(self):     #构造器
        Geese.number += 1
        print("\n我是第" + str(Geese.number) + "只大雁,我属于雁类!我有以下特征:")
        print(Geese.neck)
        print(Geese.wing)
        print(Geese.leg)

#创建四个雁类的对象
list1 = []
for i in range(4):
    list1.append(Geese())
print("一共有" + str(Geese.number) + "只大雁")
复制代码

 

运行结果如下:

 

 

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

  在IDLE中创建一个名称为film.py 的文件,然后在该文件中定义一个电视节目类TVshow,并在该类中定义一个类属性,用于保存电影列表,然后在_init_()方法中定义一个私有的实例属性,再将该属性转换为可读取、可修改(有条件进行)的属性,最后创建类的实例,并获取和修改属性值。

 

代码如下:

复制代码
class TVshow:
    list_film = ["战狼2", "红海行动", "西游记女儿国", "熊出没·变形记"]
    def __init__(self, show):
        self.__show = show
    @property   #将方法转换为属性
    def show(self):
            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)
复制代码

运行结果如下:

 

 

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

  在IDLE中创建一个名称为 fruit.py 的文件,然后在该文件中定义一个水果类Fruit(作为基类),并在该类中定义一个类属性(用于保存水果默认的颜色)和一个harvest()方法,然后创建Apple类和Orange类,都继承自Fruit类,最后创建Apple类和Orange类的实例,并调用harvest()方法(在基类中编写)。

 

代码如下:

复制代码
class Fruit:
    color = "绿色"
    def harvest(self, color):
        print("水果是:" + color + "的!")        #输出形参color
        print("水果已经收获......")
        print("水果原来是:" + Fruit.color + "的!");   #输出类属性color

class Apple(Fruit):     #继承父类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方法
复制代码

运行结果如下:

 

 

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

   在IDLE中创建一个名称为fruit.py的文件,然后在该文件中定义一个水果类Fruit〈作为基类),并在该类中定义_init_()方法,在该方法中定义一个类属性(用于保仔水果默认的颜巴),然石仕Fruit类中定义一个harvest()方法,再创建Apple类和 Sapodilla类,都继承自Fruit类,最后创建Apple类和Sapodilla类的实例,并调用harvest()方法(在基类中编写)。

 

代码如下:

复制代码
class Fruit:    #父类
    def __init__(self, color = "绿色"):
        Fruit.color = color
    def harvest(self, color):
           print("水果是:" + self.color + "的!")    #输出形参color
           print("水果已经收获......")
           print("水果原来是:" + Fruit.color + "的!")     #输出类属性color

class Apple(Fruit):
    color = "红色"
    def __init__(self):
        print("我是苹果")
        super().__init__()  #调用父类的构造器

class Sapodilla(Fruit):
    def __init__(self, color):
        print("\n我是人参果")
        super().__init__(color)     #调用父类的构造器
        #重写父类harvest()方法
        def harvest(self, color):
            print("人参果是:" + self.color + "的!")  # 输出形参color
            print("人参果已经收获......")
            print("人参果原来是:" + Fruit.color + "的!") #输出类属性color

apple = Apple()
apple.harvest(apple.color)
sapodilla = Sapodilla("白色")
sapodilla.harvest("金黄色带紫色条纹")
复制代码

运行结果如下:

 

 

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

  模智能手机的默认语言为英文,但制造手机时可以将默认语言设置为中文。编写手机类,采用无参构造方法时,表示使用默认语言设计,利用有参构造方法时,修改手机的默认语言。效果如图7.22所示。

 

代码如下:

复制代码
class Phone:
    def __init__(self, language = "英文"):
        if language == "英文":
            print("智能手机的默认语言为英文")
        else:
            print("将智能手机的默认语言设置为" + language)
phone1 = Phone()
phone2 = Phone("中文")


# Python的构造函数是不能重载一个类只能有一个构造函数存在。
# 定义多个构造方法时,实例化类只实例化最后的构造方法
# 即后面的构造方法会覆盖前面的构造方法
复制代码

运行结果如下:

 

 

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

  创建信用卡类,并且为该类创建一个构造方法,该构造方法有3个参数,分别是self、卡号和密码。其中,密码可以设置一个默认值123456,代表默认密码。在创建类的实例时,如果不指定密码,就采用默认密码,否则要重置密码。效果如图7.23所示。

 

 

 

代码如下:

复制代码
class Card:
    def __init__(self, id, pwd = "123456"):
        if pwd == "123456":
            print("信用卡" + str(id) + "的默认密码为" + str(pwd))
        else:
            print("重置信用卡" + str(id) + "的密码为" + str(pwd))

card1 = Card("40137335633800642")
card2 = Card("40137335633800642", "168779")
复制代码

运行结果如下:

 

 

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

  模拟实现输出进销存管理系统中的每月销售明细,运行程序,输入要查询的月份,如果输入的月份存在销售明细,则显示本月商品销售明细;如果输入的月份不存在或不是数字,则提示“该月没有销售数据或者输入的月份有误!”。效果如图7.24所示。

 

 

代码如下:

复制代码
class Sale:
    def __init__(self):
        self.details = {'2': ['商品编号:T0001 商品名称:笔记本电脑',
                           '商品编号:T0002 商品名称:华为荣耀6X',
                           '商品编号:T0003 商品名称:iPad',
                           '商品编号:T0004 商品名称:华为荣耀V9',
                           '商品编号:T0005 商品名称:MacBook']}
    def showInfo(self, month):      #查询商品明细
        if month in self.details:
            print(str(month) + "月份的商品销售明细如下:")
            for item in self.details[month]:
                print(item)
        else:
            print("该月份没有销售数据或输入月份有误!")

print("————————————————销售明细——————————————————")
sale = Sale()
while(True):
    month = input("请输入要查询的月份(比如1、2、3等,输入0退出):")
    if month == '0':
        break
    sale.showInfo(month)
复制代码

运行结果如下:

 

 

实战四:模拟电影院的自动售票机选票页面

  在电影院中观看电影是一项很受欢迎的休闲娱乐,现请模拟电影院自动售票机中自动选择电影场次的页面,例如,一部电影在当日的播放时间有很多,可以自动选择合适的场次。效果如图7.25所示。

 

 

代码如下:

复制代码
class Movie:
    movie_name = ''
    sessions = ''
    seat = ''

    def __init__(self):
        print('\n欢迎使用自动售票机~~')

    def choiceMovie(self, name):  #选择电影
        Movie.movie_name = name
        print("已选电影:" + Movie.movie_name)

    def choiceSessions(self, sessions):  #选择场次
        Movie.sessions = "2018.4.12 " + sessions
        print('电影场次:' + sessions)

    def seats(self, seat):  #选择座位
        Movie.seat = seat
        print('选择座位:' + seat)

    def showInfo(self):
        print("电影:" + Movie.movie_name)
        print("播出时间:" + Movie.sessions)
        print("座位:" + Movie.seat)
        print('\n出票完成,请别忘记取票')

movie1 = Movie()
print('\n请选择正在上映的电影:1、《长津湖》 2、《战狼2》3、《红海行动》')
movie1.choiceMovie(input())
print('\n请选择电影播放场次:1、9:30  2、10:40  3、12:00')
movie1.choiceSessions(input())
print('\n请选择座位剩余座位:10-01, 10-02, 10-03, 10-04')
movie1.seats(input())
print('\n正在出票。。。\n')
# 电影票信息
movie1.showInfo()
复制代码

运行结果如下:

 

 

posted @ 2022-12-08 15:06  MMMMeng  阅读(76)  评论(0)    收藏  举报