我有车的名单以及他们在米里程(我得到的数据的从游戏API,但我会用一个函数例子,而不是在这里。)因此,每一辆汽车有一个开始=假的开头和有一个函数,将返回如果他们开始并行驶超过 1 米。metersdriven = 0started = Falsedef getCarState(id): if id == 1: return 290 if id == 2: return 0 if id == 3: return 1200def init(driver): global metersdriven, started metersdriven = getCarState(driver) if not started: if metersdriven > 1: started = True return metersdriven else: return 'Not started' else: return 'Not started'这就是代码,这就是我的意思:fd = init(1)sd = init(2)td = init(3)>>> print(fd)290>>> print(sd)'Not started'正如您在上面看到的,我们还没有遇到问题,但是现在出现了问题>>> print(td)'Not started'我们实际上想检查第三辆车,但它返回“未启动”,这不是真的,它实际上已经行驶了 1200 米。我可以理解这是由于我们最初打电话检查第一辆车并因此将开始设置为 True 引起的。如果我们一开始叫第三辆车,它会返回1200米,反之亦然。那么我该如何解决这个问题呢?如何让每辆车都有自己的布尔值?我需要使用类吗?
2 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
是的,您可以为此使用类,因为它可以让您轻松管理实例。类似以下内容就足够了:
class Car:
def __init__(self, mileage):
self.mileage = mileage
self.started = False
def start(self):
self.started = True if self.mileage > 0 else False
def stop(self):
self.started = False
现在创建一个像这样的实例:
>>> sd = Car(1200) # 1200 is the mileage
>>> fd = Car(0) # this one has 0 mileage
>>> sd.started
False
>>> sd.start()
>>> sd.started
True
>>> fd.start()
>>> fd.started
False # because mileage is 0
添加回答
举报
0/150
提交
取消