思维导图:

作业:
作业一:
1.创建一个Animal(动物)基类,其中有一个run方法,输出跑起来....;
2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run()方法还有eat()方法;
2.1run方法输出 跑起来....
2.2 eat 方法输出 吃东西...
python
# 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...
python
# 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方法,增加打印输出"一天可以吃一担粮食..."
python
# 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` 方法,最后删除其中一个对象,并打印删除后的对象个数。
python
# 定义一个Person 类,包含初始化 init 方法:
# 实例属性: 名字, name
# 年龄, age
# 记录由该类创建的对象的个数,创建一个对象,计数+1,删除一个对象,计数-1;
class Person:
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
Person.count += 1
def __del__(self):
Person.count -= 1
# 定义一个方法,可以打印当前对象的个数;
def get_count(self):
return f"当前 Person 对象的个数为:{self.count}"
# 定义一个方法show_info, 输出以下信息
# 这是一个 Person 类,谢谢查看!
@classmethod
def show_info(cls):
print('这是一个 Person 类,谢谢查看!')
# 打印对象的时候,可以输出打印自己的名字和年龄
# 我的名字是 xxx, 年龄是 xxx
def __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, 代码不发生变化的情况下, 完成多次战斗
python
#定义战斗机类
class FighterJet(object):
pass
class HeroicGenerationFighterJet(FighterJet):
def __init__(self):
self.power = 60
class HeroSecondGenerationFighter(FighterJet):
def __init__(self):
self.power = 80
class 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` 抽象类标准的对象,通过调用其打印方法进行功能验证;最后在多态场景测试中,将不同品牌的打印机对象传入同一测试函数,验证其能否在统一接口下表现出各自的实现行为,从而体现"同一接口、不同实现"的多态特性。
python
# 打印机标准
# 1、请抽象父类,制定标准:抽象printer,要求支持黑白打印(Black_white_printing)、彩色打印(color_printing)。
class Printer(object):
def Black_white_printing(self):
pass
def 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)
运行结果:
