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)

运行结果:

相关推荐
珹洺2 小时前
Java-Spring入门指南(十二)SpringAop的三种实现方式
java·开发语言·spring
做运维的阿瑞2 小时前
使用 Python 打造一个轻量级系统信息查看器
开发语言·后端·python·系统架构
磨十三2 小时前
C++ 中的类型双关、union 与类型双关:让一块内存有多个“名字”
开发语言·c++
chao_7892 小时前
Union 和 Optional 区别
开发语言·数据结构·python·fastapi
hsjkdhs2 小时前
C++之类的组合
开发语言·c++·算法
程序员晚枫2 小时前
深度解析:Python中处理PDF的库有很多,我应该选择哪一个?
python
疯狂的Alex3 小时前
【C#避坑实战系列文章16】性能优化(CPU / 内存占用过高问题解决)
开发语言·性能优化·c#
象骑士Hack3 小时前
dev c++工具下载 dev c++安装包下载 dev c++软件网盘资源分享
开发语言·c++
我的xiaodoujiao3 小时前
Web UI自动化测试学习系列5--基础知识1--常用元素定位1
windows·python·学习·测试工具