You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用类结合time、datetime模块时循环计时器未重置问题

问题原因

你定义的start和dateStart是类属性,而非实例属性,这是导致计时器无法重置的核心原因。

  • 类属性直接定义在类代码块内、类方法外,Python在首次解析类定义时就会执行对应的赋值逻辑,整个程序运行周期内只会计算一次,所有类实例共享同一个类属性的值,不会随新实例创建重新赋值。
  • 你提到的其余属性可以正常重置,大概率是这些属性定义在构造方法__init__中:__init__是类的实例构造方法,每次创建新的类实例时都会执行一次,内部赋值的变量属于实例私有属性,不同实例之间互不影响。

修复方案

将时间初始化逻辑移到__init__构造方法内即可,修改后代码如下:

import time
import datetime

class Test:
    def __init__(self):
        # 每次实例化时重新计算当前时间,作为当前实例的独立计时起点
        self.start = time.time()
        self.dateStart = datetime.datetime.now()

    def end(self):
        time.sleep(10)
        print(time.time() - self.start)
        print(datetime.datetime.now() - self.dateStart)

while True:
    test = Test()
    test.end()

修改后每次循环创建Test实例时,都会重新获取当前时间作为计时起点,输出的耗时会固定为10秒左右,不会再累积。

内容的提问来源于stack exchange,提问作者IgnacioDLF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:15:01