网站建设后需要交费吗怎么建企业网站
打卡MIT6.100L(17/26)
一、背景
写一个Vehicle
类,一个Vehicle
有以下属性:
轮子的数量
乘客数量
颜色
最大载客数: 5
class Vehicle(object):def __init__(self, w, o, c):"""交通工具有以下属性:轮子的数量(int)、乘客数量(int)、颜色(str)最大载客数: 5"""self.wheels = wself.occupants = oself.color = c
二、坑点
在上面的 Vehicle
类代码基础上进行扩展。
为 Vehicle
类创建另一个名为 add_n_occupants
的方法,该方法接受一个整数 n
作为参数。
当调用该方法时,使其在增加乘员时进行以下检查:
- 如果增加后的乘员数量超过
max_occupancy
,则不执行增加操作。 - 抛出
ValueError
异常,并提供适当的错误信息。
如果增加后的乘员数量不超过 max_occupancyself
,乘员数量增加 n
,并返回增加后的总乘员数。
如果这么写的话。。。。。。
def add_n_occupants(self, n):self.occupants += nif self.occupants > self.max_occupancy:raise ValueError("too many man")else:return self.occupantsv2 = Vehicle(4, 3, "blue")
print(v2.add_n_occupants(3))
在执行代码后,虽然会报错,但是实际上,v2也依然修改成了6,因为他的值已经被修改了,只是在代码逻辑上抛出报错。
所以我们可以多声明一个变量,来存储这个过程。
def add_n_occupants(self, n):new_occ = self.occ + nif new_occ > self.max_occ:raise ValueError("exceeded max occupancy")else:self.occ = new_occreturn self.occ
这样不仅按题目要求报错,occ也没有改变他的值。