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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:53:15