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

Python Time类中如何在String_time方法中使用__init__的时间属性?

解决你的Time类String_time方法问题

先修正原代码里的几个小问题,再实现你要的补零格式化功能:

原代码的几个坑

  1. import time放在类内部没必要,直接移到文件最开头就行
  2. 用类属性obj_time当默认参数会踩坑:这个属性只会在类第一次加载时生成一次时间,之后哪怕过了几小时创建新实例,默认时间还是原来的那个,不会更新
  3. String_time方法没加self参数,根本拿不到实例里的时、分、秒数据

修正后的完整代码

import time

class Time:
    def __init__(self, hour=None, minute=None, second=None):
        # 没传参数就拿当前本地时间
        if hour is None or minute is None or second is None:
            current_time = time.localtime()
            self.hour = current_time.tm_hour
            self.minute = current_time.tm_min
            self.second = current_time.tm_sec
        else:
            self.hour = hour
            self.minute = minute
            self.second = second
        print('Time is: {}:{}:{}'.format(self.hour, self.minute, self.second))

    def String_time(self):
        # 用02d补零格式化,确保是两位数字
        formatted = f"{self.hour:02d}:{self.minute:02d}:{self.second:02d}"
        print(formatted)
        # 要是需要返回这个字符串给外部用,就加return formatted

# 测试用法
# 用当前时间创建实例
now_time = Time()
now_time.String_time()

# 自定义时间创建实例
custom_time = Time(5, 3, 7)
custom_time.String_time()

核心点说明

  • 实例方法必须加self作为第一个参数:self就是当前的实例对象,通过它就能直接访问__init__里存的self.hour、self.minute、self.second
  • 补零格式化靠{变量:02d}:意思是把整数格式成两位,不够的话前面补0,比如5就变成05
  • 默认时间逻辑改到__init__内部判断:每次创建实例都会重新拿当前时间,不会再用旧时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:35:23