Day 15 - 面向对象2习题

2023-11-09

  1. 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法

    class Auto:
        stop_flag = '停车'
        accelerate_flag = '加速'
        slow_flag = '减速'
    
        def __init__(self, color, weight, speed, tires):
            self.tires = tires
            self.color = color
            self.weight = weight
            self.speed = speed
    
        def accelerate(self):
            return Auto.accelerate_flag
    
        @classmethod
        def slow(cls):
            return cls.slow_flag
    
        @staticmethod
        def stop():
            return Auto.stop_flag
    
    
    class CarAuto(Auto):
        def __init__(self, air, CD, color, weight, speed, tires=4):
            super().__init__(color, weight, speed, tires)
            self.air = None
            self.cd = None
    
        def accelerate(self):
            return f'{CarAuto.accelerate_flag}->加速!'
    
        @classmethod
        def slow(cls):
            return f'{cls.slow_flag}->减速!'
    
    
    c1 = CarAuto(True, True, 'white', 120, 300)
    print(c1.accelerate_flag)
    print(c1.color)
    print(c1.stop())
    print(c1.accelerate())
    print(c1.slow())
    
  2. 创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数

    class Person:
        count = 0
    
        def __init__(self):
            Person.count += 1
            # print(Person.count)
    
        @classmethod
        def object_num(cls):
            return f'调用Person类的对象个数为:{cls.count}'
    
    
    p1 = Person()
    p2 = Person()
    p3 = Person()
    p4 = Person()
    print(Person.object_num())
    
  3. 创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,

    要求打印这个类的对象的时候以’/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/’ 的形式来打印

    import re
    
    
    class Animal:
        def __init__(self, sex, age, color, species):
            self.sex = sex
            self.age = age
            self.color = color
            self.species = species
    
        def __repr__(self):
            r1 = re.compile(r':')
            r2 = re.compile(r',')
            strs = str(self.__dict__)
            str1 = re.sub(r1, '-', strs)
            str2 = re.sub(r2, ' ', str1)
            return f'/{self.__class__.__name__}的对象:{str2[1:-1]}/'
    
    
    a1 = Animal('male', 20, 'yellow', 'Mammals')
    print(a1)
    
  4. 写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值

    class Round:
        pi = 3.14
    
        def __init__(self, radius):
            self.r = radius
            # self._perimeter = 0
            # self._area = 0
    
        @property
        def perimeter(self):
            return (self.r << 1) * Round.pi
    
        @property
        def area(self):
            return self.r**2 * Round.pi
    
        @perimeter.setter
        def perimeter(self, value):
            if value or value == 0:
                raise ValueError
    
        @area.setter
        def area(self, value):
            if value or value == 0:
                raise ValueError
    
    
    o = Round(3)
    print(o.perimeter)
    print(o.area)
    
  5. 写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥)

    import random
    
    
    class Poker:
        colors = ['♦', '♣', '♥', '♠']
        numbers = ['J', 'Q', 'K', 'A', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
    
        @classmethod
        def poker(cls):
            pokers = [i + j for i in cls.colors for j in cls.numbers]
            pokers.extend(['Joker', 'joker'])
            # print(pokers)
            return pokers
    
        @classmethod
        def p_shuffle(cls):
            s_poker = cls.poker()
            random.shuffle(s_poker)
            return s_poker
    
        @classmethod
        def p_licensing(cls):
            i_poker = iter(cls.p_shuffle())
            A_cards = []
            B_cards = []
            C_cards = []
            for _ in range(18):
                A_cards.append(next(i_poker))
                B_cards.append(next(i_poker))
                C_cards.append(next(i_poker))
            return f'A的手牌为:{list(A_cards)}\nB的手牌为:{list(B_cards)}\nC的手牌为:{list(C_cards)}'
    
    
    print(Poker.poker())
    print(Poker.p_shuffle())
    print(Poker.p_licensing())
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Day 15 - 面向对象2习题 的相关文章

随机推荐

  • 新版eclipse编写Android 时经常报的错误 -support-v7

    一 和以往一样新建完一个Android项目之后 会报android support v4 或者V7找不到的错误 这是因为这两个包在另一个附带的项目 android support v7 appcompat 下 解决办法 右键你刚才建 的项目
  • OpenCV3 VideoCapture出错Connection to tcp://192.168.15.11:554?timeout=0 failed: No route

    tcp 0x2261180 Connection to tcp 192 168 15 11 554 timeout 0 failed No route to host joinus test 7689 GStreamer CRITICAL
  • Harbor主从

    一 harbor主从方案 1 主备 简单 主挂了切到备Harbor 同一时间只有一台提供服务 适合少量镜像下载 2 双主复制 双向配置复制 两台同时提供服务 前面增加负载均衡器 3 一主多从 多个从同步主 适合多地区业务 大量镜像下载需求
  • sqli-lab学习笔记(学习笔记)(21-30)

    打完21 30之后的后记 后来发现 网上所有就是讲解sqli的 到后面都没有用查有多少字段数的order by这个语句 几乎都没有提到过 我自己也尝试在后面的变形中加入加入进去但是不知道为什么老是出错 现在我想到的办法就是 比如28a关 语
  • 游戏开发Unity杂项知识系列:Microsoft Visual C++ 2015 安装失败 0x80070666-已安装这个产品的另一个版本

    参考 https blog csdn net qq 44781435 article details 108629616 总结 系统有了一个更高版本的vc 但是与所需不匹配 必须先卸载高版本的然后再安装目标版本
  • Python Selenium搭建UI自动化测试框架

    自动化测试是软件测试中非常重要的一部分 可以提高测试效率和测试覆盖率 在UI自动化测试中 Selenium是非常流行的工具 本文将介绍如何使用Python和Selenium搭建UI自动化测试框架 一 环境准备 在开始搭建UI自动化测试框架之
  • JavaScript资源大全中文版(Awesome最新版)

    Awesome系列的JavaScript资源整理 awesome javascript是sorrycc发起维护的 JS 资源列表 内容包括 包管理器 加载器 测试框架 运行器 QA MVC框架和库 模板引擎 数据可视化 时间轴 编辑器等 前
  • Elasticsearch安装IK分词器、配置自定义分词词库

    一 分词简介 1 单字分词 2 二分法分词 3 词库分词 二 配置IK中文分词器 三 配置自定义分词拓展词库 一 分词简介 在Elasticsearch中 假设搜索条件是 华为手机平板电脑 要求是只要满足了其中任意一个词语组合的数据都要查询
  • 自学软件测试6个月,找到了月薪8.5K的工作,多亏了这套学习方法

    8 5K的薪资也许对csdn的各位大佬来说并不算什么 但是对于我这种曾经在工厂 每月工资才4000左右的人来说 已经是巨大的改变了 文中附我的学习心得及学习资料 其实我在很早就对编程感兴趣 只是一直缺乏学习的动力 刚好在去年疫情期间 厂里停
  • vue + ts 项目中watch的用法

    要使vue支持ts写法 我们需要用到vue property decorator 这个组件完全依赖于vue class componet 首先安装 npm i D vue property decorator Watch path stri
  • Tkinter PhotoImage 踩坑记录

    1 直接使用PhotoImage file xxxx 报错 tkinter TclError couldn t recognize data in image file xxxxx png 原因 PhotoImage支持的图片格式有限 解决
  • MySQL视图、索引、备份与恢复、执行计划

    目录 一 前言 1 导读 2 学习的好处 二 视图 1 什么是视图 2 视图与数据表的区别 3 使用视图的优点 4 视图的语法 1 创建视图 CREATE VIEW 2 查询视图数据 3 更新视图数据 4 修改视图定义 ALTER VIEW
  • 超强实用:中国各地特产风味大搜捕!

    http www lotour com snapshot 2006 2 6 snapshot 32012 shtml 来源 中国交通旅游图册 北京特产风味 北京集全国风味佳肴 工艺美术和民族用品于一城 宫廷菜点 烤鸭 果脯 酥糖 京绣 戏装
  • 如何用Python让你的电脑说话

    如何用Python让你的电脑说话 你成为亿万花花公子的第一步 如果你是像 钢铁侠 这样的电影的粉丝 你可能已经幻想过得到你自己的贾维斯 那么 在这篇文章中 我将告诉你如何开始制作你自己的电脑助手 我们将通过一个小的编程和一些聪明的pytho
  • 图基本算法介绍:广度优先搜索、深度优先搜索、拓扑排序、强连通分支(算法篇)

    一 广度优先搜索 什么是广度优先搜索 在给定图G V E 后和一个特定的源顶点s的情况下 广度优先搜索 系统的探索G中的边 以期发现从s可以到达的所有顶点 并计算s到所有这些可达顶点之间的距离 即最少的边数 广度优先搜索的作用 个人从定义理
  • VC下加载多种格式图片的方法总结

    尽管VC有提供相应的API和类来操作bmp位图 图标和 增强 元文件 但却不支持jpg gif和png等格式的图片 而这几种格式却是常常要用到的 这里我给大家介绍两种办法来操作这些格式的图片 1 用API OleLoadPicture来加载
  • Object对象如何类获取对应类的属性值

    Object对象如何类获取对应类的属性值 public void test throws NoSuchFieldException IllegalAccessException Deposit deposit new Deposit dep
  • 卡方分布

    以上讲了一种称为服从正态分布的概率密度函数 今天 讲一讲服从 卡方分布 的概率密度函数 首先给出该函数的定义 自由度 是公式中一个重要参数 自由度不同 图形的形状也完全不同 众所周知 直线方程中的参数k是斜率 它控制着直线的倾斜角度 它不同
  • java中trim()方法

    string类型 指定要删除首部和尾部空格的字符串返回值String 函数执行成功时返回删除了string字符串首部和尾部空格的字符串 发生错误时返回空字符串 如果参数值为null时 会抛出空 指针异常 主要是为了防止复制过来首尾出现字符串
  • Day 15 - 面向对象2习题

    建立一个汽车类Auto 包括轮胎个数 汽车颜色 车身重量 速度等属性 并通过不同的构造方法创建实例 至少要求 汽车能够加速 减速 停车 再定义一个小汽车类CarAuto 继承Auto 并添加空调 CD属性 并且重新实现方法覆盖加速 减速的方