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

我有车的名单以及他们在米里程(我得到的数据的从游戏API,但我会用一个函数例子,而不是在这里。)因此,每一辆汽车有一个开始=假的开头和有一个函数,将返回如果他们开始并行驶超过 1 米。


metersdriven = 0

started = False


def getCarState(id):

    if id == 1:

        return 290

    if id == 2:

        return 0

    if id == 3:

        return 1200



def 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米,反之亦然。


那么我该如何解决这个问题呢?如何让每辆车都有自己的布尔值?我需要使用类吗?


杨__羊羊
浏览 165回答 2
2回答

POPMUISE

是的,您可以为此使用类,因为它可以让您轻松管理实例。类似以下内容就足够了: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.startedFalse>>> sd.start()>>> sd.startedTrue>>> fd.start()>>> fd.startedFalse # because mileage is 0

繁星点点滴滴

只需将started变量全部删除并仅使用行驶的仪表来检查汽车是否已运行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python