如何用Python类实现datetime函数?解决类内重复代码问题
优化重复代码,使用初始化传入的时间变量
你的代码核心问题是每个属性方法都重复创建了同一个固定时间的datetime实例,完全没用到初始化时传入的timedate参数,导致类失去了复用性。下面是修改后的代码:
from datetime import datetime, date, time import time as t # 重命名避免和datetime.time冲突 class Nov420: def __init__(self, timedate): self.timedate = timedate @property def dateformat1(self): return self.timedate.strftime('%y/%b/%d %H:%M:%S ') @property def dateformat2(self): return self.timedate.strftime('%Y/%B/%d %H:%M:%S %p') @property def wday1(self): return self.timedate.strftime('%a, %Y %b %d ') @property def wday2(self): return self.timedate.strftime('%A, %Y %b %d ') @property def weekday(self): return self.timedate.isoweekday() @property def day_of_yr(self): time_struct = t.gmtime(self.timedate.timestamp()) return time_struct[7] date1 = datetime(2020, 11, 4, 14, 53) nov = Nov420(date1) print(nov.dateformat1) print(nov.dateformat2) print(nov.wday1) print(nov.wday2) print(f"Weekday: {nov.weekday}") print(f"Day of the year: {nov.day_of_yr}")
修改说明:
- 删掉了所有方法里硬编码的
datetime(2020, 11, 4, 14, 53, 00),统一使用初始化时传入并保存的self.timedate,现在这个类可以接收任意datetime实例,复用性大大提升 - 把
import time改成import time as t,避免和datetime.time重名导致的潜在冲突 - 调整
day_of_yr方法,用self.timedate获取时间戳,再通过t.gmtime处理,同时避免重复赋值变量
执行结果和你原来的一致:
20/Nov/04 14:53:00 2020/November/04 14:53:00 PM Wed, 2020 Nov 04 Wednesday, 2020 Nov 04 Weekday: 3 Day of the year: 309
内容的提问来源于stack exchange,提问作者Mckinnon T Chinowe
相关产品推荐
相关产品推荐

