python进阶_Day2

思维导图:

作业:

作业一:

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)

运行结果:

相关推荐
fox_lht21 小时前
第一章 不可变的变量
开发语言·后端·rust
骁的小小站1 天前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
心灵宝贝1 天前
申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
开发语言·php
lly2024061 天前
PHP 字符串操作详解
开发语言
像是套了虚弱散1 天前
DevEco Studio与Web联合开发:打造鸿蒙混合应用的全景指南
开发语言·前端·华为·harmonyos·鸿蒙
旭意1 天前
C++蓝桥杯之结构体10.15
开发语言·c++
飞翔的佩奇1 天前
【完整源码+数据集+部署教程】【天线&水】舰船战舰检测与分类图像分割系统源码&数据集全套:改进yolo11-repvit
前端·python·yolo·计算机视觉·数据集·yolo11·舰船战舰检测与分类图像分割系统
麦麦鸡腿堡1 天前
Java的单例设计模式-饿汉式
java·开发语言·设计模式
简单点了1 天前
go前后端项目的启动 、打包和部署
开发语言·后端·golang
木头左1 天前
最大回撤约束下ETF多因子动态止盈参数校准方案
python