Python Time类中如何在String_time方法中使用__init__的时间属性?
解决你的Time类String_time方法问题
先修正原代码里的几个小问题,再实现你要的补零格式化功能:
原代码的几个坑
import time放在类内部没必要,直接移到文件最开头就行- 用类属性
obj_time当默认参数会踩坑:这个属性只会在类第一次加载时生成一次时间,之后哪怕过了几小时创建新实例,默认时间还是原来的那个,不会更新 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
相关产品推荐
相关产品推荐

