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)

运行结果:

相关推荐
Blossom.11836 分钟前
移动端部署噩梦终结者:动态稀疏视觉Transformer的量化实战
java·人工智能·python·深度学习·算法·机器学习·transformer
AiXed1 小时前
PC微信协议之AES-192-GCM算法
前端·数据库·python
灵光通码2 小时前
神经网络基本概念
python·神经网络
武子康3 小时前
Java-171 Neo4j 备份与恢复 + 预热与执行计划实战
java·开发语言·数据库·性能优化·系统架构·nosql·neo4j
Petrichor_H_3 小时前
DAY 31 文件的规范拆分和写法
python
怪兽20144 小时前
fastjson在kotlin不使用kotlin-reflect库怎么使用?
android·开发语言·kotlin
ClearLiang4 小时前
Kotlin-协程的挂起与恢复
开发语言·kotlin
彭同学学习日志4 小时前
Kotlin Fragment 按钮跳转报错解决:Unresolved reference ‘floatingActionButton‘
android·开发语言·kotlin
海域云赵从友4 小时前
破解跨境数据传输瓶颈:中国德国高速跨境组网专线与本地化 IP 的协同策略
开发语言·php
咚咚王者4 小时前
人工智能之编程进阶 Python高级:第九章 爬虫类模块
开发语言·python