当前位置: 首页 > news >正文

Python关于类的一个坑点

打卡MIT6.100L(17/26)

一、背景

写一个Vehicle类,一个Vehicle有以下属性:

轮子的数量

乘客数量

颜色

最大载客数: 5

class Vehicle(object):
    def __init__(self, w, o, c):
        """
            交通工具有以下属性:
            轮子的数量(int)、
            乘客数量(int)、
            颜色(str)
            最大载客数: 5
        """
        self.wheels = w
        self.occupants = o
        self.color = c

二、坑点

在上面的 Vehicle 类代码基础上进行扩展。
Vehicle 类创建另一个名为 add_n_occupants 的方法,该方法接受一个整数 n 作为参数。
当调用该方法时,使其在增加乘员时进行以下检查:

  • 如果增加后的乘员数量超过 max_occupancy,则不执行增加操作。
  • 抛出 ValueError 异常,并提供适当的错误信息。

如果增加后的乘员数量不超过 max_occupancyself ,乘员数量增加 n,并返回增加后的总乘员数。

如果这么写的话。。。。。。

    def add_n_occupants(self, n):
        self.occupants += n
        if self.occupants > self.max_occupancy:
            raise ValueError("too many man")
        else:
            return self.occupants

v2 = Vehicle(4, 3, "blue")
print(v2.add_n_occupants(3))

在执行代码后,虽然会报错,但是实际上,v2也依然修改成了6,因为他的值已经被修改了,只是在代码逻辑上抛出报错。

所以我们可以多声明一个变量,来存储这个过程。

    def add_n_occupants(self, n):
        new_occ = self.occ + n
        if new_occ > self.max_occ:
            raise ValueError("exceeded max occupancy")
        else:
            self.occ = new_occ
            return self.occ

这样不仅按题目要求报错,occ也没有改变他的值。

http://www.dtcms.com/a/20139.html

相关文章:

  • 【Film Shot】Shot transition detection
  • Dify:修改环境变量并通过 Docker Compose 复用现有容器
  • 新建github操作
  • 【前端进阶】「全面优化前端开发流程」:利用规范化与自动化工具实现高效构建、部署与团队协作
  • Retrieval-Augmented Generation for LargeLanguage Models: A Survey
  • 用C语言解决逻辑推理问题:找出谋杀案凶手
  • C++游戏开发
  • 关于DispatchTime和DispatchWallTime
  • SQL sever数据导入导出实验
  • 【kafka系列】消费者
  • ubuntu /dev/ttyUSB1重命名为/dev/ttyUSB0。
  • CentOS 7.8 安装MongoDB 7教程
  • 【ROS2综合案例】乌龟跟随
  • 【信息学奥赛一本通 C++题解】1281:最长上升子序列
  • 反转链表2(92)
  • ThreadLocalRandom原理剖析
  • Spring Cloud — 深入了解Eureka、Ribbon及Feign
  • 2.【线性代数】——矩阵消元
  • C++:高度平衡二叉搜索树(AVLTree) [数据结构]
  • 【Cocos TypeScript 零基础 15.1】
  • 如何在Spring Boot中配置分布式配置中心
  • 2025-02-13 学习记录--C/C++-PTA 7-17 爬动的蠕虫
  • c#自动更新-源码
  • WPF的Prism框架的使用
  • 算法刷题-链表系列-两两交换链表结点、删除链表的倒数第n个元素
  • C#打印设计器
  • 72.git指南(简单)
  • SpringCloud系列教程:微服务的未来 (五)枚举处理器、JSON处理器、分页插件实现
  • DeepSeek24小时写作机器人,持续创作高质量文案
  • pnpm的使用