Timer类-如果启动计时器在Python中被调用两次,则给出一个错误

Timer类-如果启动计时器在Python中被调用两次,则给出一个错误,python,python-3.x,class,Python,Python 3.x,Class,如果启动计时器类函数被调用两次,如何调用错误?谢谢 import time class Timer(object): def __init__(self): self._startTime = None self._endTime = None def start(self): self._startTime = time.time() if self._startTime is None else print('Started'

如果启动计时器类函数被调用两次,如何调用错误?谢谢

import time
class Timer(object):
    def __init__(self):
        self._startTime = None
        self._endTime = None

    def start(self):
        self._startTime = time.time() if self._startTime is None else print('Started')

    def end(self):
        self._endTime = time.time()
        print('seconds',self._endTime - self._startTime)
t = Timer()
t.start()
t.start() # should give an error 

您可以创建一个实例变量(如果希望每个类实例调用一次)或类变量(在整个生命周期中只有一次调用,因为类变量由类的所有实例共享),以保持调用次数的计数,并且当计数超过某个阈值(在您的情况下为1)时,可以引发异常。大概是这样的:

import time
class Timer(object):
    def __init__(self):
        self._startTime = None
        self._endTime = None
        self.count = 0 # Instance variable, which allows 1 invocation per instance of this class

    def start(self):
        self.count+=1
        if self.count == 2: # Threshold is 2 here
            raise Exception # You custom exception here
        self._startTime = time.time() if self._startTime is None else print('Started')

    def end(self):
        self._endTime = time.time()
        print('seconds',self._endTime - self._startTime)

有关Python中类变量与实例变量的更多详细信息,请参阅。

引发异常。