为了账号安全,请及时绑定邮箱和手机立即绑定

如何让每个实例调用拥有自己的布尔值?

如何让每个实例调用拥有自己的布尔值?

杨__羊羊 2021-06-04 18:41:52
我有车的名单以及他们在米里程(我得到的数据的从游戏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


查看完整回答
反对 回复 2021-06-06
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

只需将started变量全部删除并仅使用行驶的仪表来检查汽车是否已运行。


查看完整回答
反对 回复 2021-06-06
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信