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

Python3中如何保存类实例创建的具体时间?

首先得澄清一个误解:你的代码其实已经正确保存了实例创建时刻的时间,get_borningTime方法只是对已经存在的self.borningTime做格式化输出,并不会每次调用都获取新的时间。你看到两个实例的时间相同,只是因为它们创建的速度太快了——在Python 3.6之前,datetime.datetime.now()的精度是秒级,同一秒内创建的实例自然会得到相同的时间戳。

接下来针对你的需求,给出几个优化和验证方案:

1. 让创建时间精确到微秒,区分同时创建的实例

修改get_borningTime方法,在格式化字符串中加入微秒部分,这样即使实例在同一秒创建,也能通过微秒区分:

def get_borningTime(self):
    return self.borningTime.strftime("%Y-%m-%d %X.%f")

现在运行代码,你会看到类似2018-05-24 17:42:45.123456这样的输出,每个实例的时间会有细微差异。

2. 优化代码结构(避免重复导入模块)

把import datetime移到文件顶部,不要放在__init__方法里——每次创建实例都导入模块完全没必要,会浪费性能:

import datetime

class Ants(object):
    """Workers"""
    ID = 1
    def __init__(self):
        self.borningTime = datetime.datetime.now()
        self.ID = Ants.ID
        Ants.ID += 1
    
    def get_ID(self):
        return "Ant ID:" + str(self.ID).zfill(5)
    
    def get_borningTime(self):
        return self.borningTime.strftime("%Y-%m-%d %X.%f")

3. (可选)让ID跨程序运行保持递增

如果希望每次启动程序时,实例ID不会从1重置,而是接着上次的数值继续增长,可以把ID值持久化到文件中:

import datetime
import os

class Ants(object):
    """Workers"""
    ID_FILE = "ant_id.txt"
    # 加载上次保存的ID,文件不存在则初始化为1
    if os.path.exists(ID_FILE):
        with open(ID_FILE, 'r') as f:
            ID = int(f.read().strip())
    else:
        ID = 1

    def __init__(self):
        self.borningTime = datetime.datetime.now()
        self.ID = Ants.ID
        Ants.ID += 1
        # 把更新后的ID写回文件
        with open(Ants.ID_FILE, 'w') as f:
            f.write(str(Ants.ID))
    
    def get_ID(self):
        return "Ant ID:" + str(self.ID).zfill(5)
    
    def get_borningTime(self):
        return self.borningTime.strftime("%Y-%m-%d %X.%f")

验证时间是否真的被持久保存

你可以做个小测试:创建实例后等待几秒再输出时间,看看是否还是创建时的时间:

my1Ant = Ants()
import time
time.sleep(3)  # 等待3秒
print(my1Ant.get_borningTime())  # 输出的应该是3秒前的创建时间,不是当前时间

这能直观证明self.borningTime确实保存了实例创建时的初始值,不会随时间变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:16:23