python进阶_Day2
思维导图:
作业:
作业一:
# 1.创建一个Animal(动物)基类,其中有一个run方法,输出跑起来....;
# 2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run()方法还有eat()方法;
# 2.1run方法输出 跑起来....
# 2.2 eat 方法输出 吃东西...
# 1.创建一个Animal(动物)基类,其中有一个run方法,输出跑起来;
class Animal:def run(self):print('跑起来')# 2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run()方法还有eat()方法;
class Horse(Animal):def eat(self):print('吃东西')# 创建对象
horse = Horse()
# 2.1run方法输出 跑起来.
horse.run()
# 2.2 eat 方法输出 吃东西
horse.eat()
运行结果:
作业二:
# 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出Animal is running...
# 2.创建一个Horse(马)类继承于动物类,Horse类中重写run方法,增加打印输出"Horse is running...",同时实现eat方法, 输出 Horse is eating...
# 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出Animal is running...
class Animal(object):def run(self):print('Animal is running...')# 2.创建一个Horse(马)类继承于动物类,Horse类中重写run方法,增加打印输出"Horse is running...",同时实现eat方法, 输出 Horse is eating...
class Horse(Animal):def run(self):print('Horse is running...')def eat(self):print('Horse is eating...')#创建对象并调用
horse = Horse()
horse.eat()
horse.run()
运行结果:
作业三:
# 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出Animal is running...
# 2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run方法还有eat方法
# 2.1 run方法输出 Horse is running...
# 2.2 eat 方法输出 吃东西...
# 3.创建一个 SwiftHorse(千里马)类继承Horse类,初始化init方法name属性为千里马,同时针对吃东西
# SwiftHorse类中重写eat方法,增加打印输出"一天可以吃一担粮食..."
# 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出Animal is running...
class Animal(object):def run(self):print('Animal is running...')# 2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run方法还有eat方法
# 2.1 run方法输出 Horse is running...
# 2.2 eat 方法输出 Horse is eating...
class Horse(Animal):def run(self):print('Horse is running...')def eat(self):print('Horse is eating...')# 3.创建一个 SwiftHorse(千里马)类继承Horse类,初始化init方法name属性为千里马,同时针对吃东西
# SwiftHorse类中重写eat方法,增加打印输出"一天可以吃一担粮食..."
class SwiftHorse(Horse):def __init__(self):self.name = 'SwiftHorse'def eat(self):print('一天可以吃一担粮食...')#创建对象
swifthorse = SwiftHorse()
swifthorse.run()
swifthorse.eat()
运行结果:
作业四:
定义一个 `Person` 类,包含 `__init__` 初始化方法,用于设置实例属性 `name`(名字)和 `age`(年龄);该类需能够记录由其创建的对象个数,每创建一个对象,计数加1,删除一个对象时,计数减1;类中定义一个 `show_info` 方法,用于输出“这是一个 Person 类,谢谢查看!”;重写 `__str__` 方法,使得打印对象时能输出“我的名字是 xxx,年龄是 xxx”;定义一个 `study` 方法,调用时输出“我叫 xxx,我要好好学习”;同时提供一个类方法用于打印当前对象的个数;使用时先调用 `show_info` 方法,然后创建两个对象,分别打印对象信息并输出当前对象个数,再分别调用两个对象的 `study` 方法,最后删除其中一个对象,并打印删除后的对象个数。
# 定义一个Person 类,包含初始化 init 方法:
# 实例属性: 名字, name
# 年龄, age
# 记录由该类创建的对象的个数,创建一个对象,计数+1,删除一个对象,计数-1;
class Person:count = 0def __init__(self, name, age):self.name = nameself.age = agePerson.count += 1def __del__(self):Person.count -= 1# 定义一个方法,可以打印当前对象的个数;def get_count(self):return f"当前 Person 对象的个数为:{self.count}"# 定义一个方法show_info, 输出以下信息# 这是一个 Person 类,谢谢查看!@classmethoddef show_info(cls):print('这是一个 Person 类,谢谢查看!')# 打印对象的时候,可以输出打印自己的名字和年龄# 我的名字是 xxx, 年龄是 xxxdef __str__(self):return f'我的名字是{self.name}, 年龄是{self.age}'# 定义一个方法 study, 输出以下信息# 我叫 xxx, 我要好好学习def study(self):print(f'我叫{self.name},我要好好学习')# 操作步骤
# 调用show_info 方法;
Person.show_info()
# 创建两个对象, 打印当前对象,并打印当前的对象个数;
person1 = Person('siren', 11)
print(person1)
print(person1.get_count())
person2 = Person('dream', 22)
print(person2)
print(person2.get_count())
# 分别使用两个对象调用study方法;
person1.study()
person2.study()
# 删除一个对象,打印输出当前的对象个数。
del person1
print(Person.count)
运行结果:
作业五:
# 构建对象对战平台object_play
# 1 英雄一代战机(战斗力60)与敌军战机(战斗力70)对抗。英雄1代战机失败!
# 2 卧薪尝胆,英雄二代战机(战斗力80)出场!,战胜敌军战机!
# 3 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗
#定义战斗机类
class FighterJet(object):passclass HeroicGenerationFighterJet(FighterJet):def __init__(self):self.power = 60class HeroSecondGenerationFighter(FighterJet):def __init__(self):self.power = 80class EnemyFighterAircraft(FighterJet):def __init__(self):self.power = 70# 构建对象对战平台object_play
def object_play(Hero, Enemy):if Hero.power > Enemy.power:print('战斗胜利,敌军失败')elif Hero.power < Enemy.power:print('战斗失败,敌军胜利')elif Hero.power == Enemy.power:print('平局')else:print('异常')# 1 英雄一代战机(战斗力60)与敌军战机(战斗力70)对抗。英雄1代战机失败!
H1 = HeroicGenerationFighterJet()
E1 = EnemyFighterAircraft()
object_play(H1,E1)
# 2 卧薪尝胆,英雄二代战机(战斗力80)出场!,战胜敌军战机!
H2 = HeroSecondGenerationFighter()
object_play(H2,E1)
# 3 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗
运行结果:
作业六:
根据要求,首先定义一个抽象父类 `Printer`,规定所有打印机必须实现黑白打印(`Black_white_printing`)和彩色打印(`Color_Printing`)两个方法,以此作为统一接口标准;然后让 HP、小米、佳能(Canon)等具体打印机类继承该父类并分别实现这两项功能;接着设计一个通用的入围测试平台函数 `make_test_printing(myobj)`,它接收任何符合 `Printer` 抽象类标准的对象,通过调用其打印方法进行功能验证;最后在多态场景测试中,将不同品牌的打印机对象传入同一测试函数,验证其能否在统一接口下表现出各自的实现行为,从而体现“同一接口、不同实现”的多态特性。
# 打印机标准
# 1、请抽象父类,制定标准:抽象printer,要求支持黑白打印(Black_white_printing)、彩色打印(color_printing)。
class Printer(object):def Black_white_printing(self):passdef Color_Printing(self):pass# 2、完成打印机hp、小米、佳能(canon)硬件入围;入围测试平台 make_test_printing(myobj:抽象类))
class Hp(Printer):def Black_white_printing(self):print('hp黑白打印')def Color_Printing(self):print('hp彩色打印')class XiaoMi(Printer):def Black_white_printing(self):print('XiaoMi黑白打印')def Color_Printing(self):print('XiaoMi彩色打印')class Canon(Printer):def Black_white_printing(self):print('Canon黑白打印')def Color_Printing(self):print('Canon彩色打印')# 入围测试平台 make_test_printing(myobj:抽象类))
def make_test_printing(myobj):myobj.Black_white_printing()myobj.Color_Printing()# 创建对象
hp = Hp()
xiaomi = XiaoMi()
canon = Canon()# 3、完成多态场景测试
make_test_printing(hp)
make_test_printing(xiaomi)
make_test_printing(canon)