Python关于类的一个坑点
- 开源代码
- 2025-09-10 09:48:02

打卡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也没有改变他的值。
Python关于类的一个坑点由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Python关于类的一个坑点”