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

解决datetime模块circular import报错及年龄计算代码改写为类的问题

问题解决

1. AttributeError报错修复

AttributeError: partially initialized module 'datetime' has no attribute 'today' (most likely due to a circular import)

这个报错的直接原因是你的工作目录下存在和Python标准库重名的datetime.py文件,导入模块时系统会优先加载本地的同名文件,而非标准库,最终触发循环导入、属性缺失问题。
修复步骤:

  • 将本地命名为datetime.py的文件改为其他名称(如age_calc.py)
  • 删除同目录下自动生成的datetime.pyc缓存文件
  • 重新运行代码即可正常导入标准库datetime模块

2. 类形式改写的年龄计算代码

改写后的代码完全保留原有逻辑,同时符合类封装规范:

import datetime

class AgeCalculator:
    def __init__(self):
        # 获取当前年份
        self.current_year = datetime.datetime.today().year
    
    def validate_date(self, date_parts):
        # 验证月份、日期合法性(保留原代码逻辑)
        month = int(date_parts[1])
        day = int(date_parts[2])
        if month > 12 or day > 31:
            return False
        return True
    
    def calc_age(self, birth_year):
        return self.current_year - int(birth_year)
    
    def run(self):
        # 接收输入并执行计算流程
        input_date = input().split('/')
        if not self.validate_date(input_date):
            print('WRONG')
            return
        age = self.calc_age(input_date[0])
        print(age)

if __name__ == "__main__":
    calculator = AgeCalculator()
    calculator.run()

可选优化说明

原有日期验证逻辑仅做了最大值校验,未兼容不同月份天数、闰年等特殊情况,可根据需求使用datetime.strptime方法做更严谨的日期合法性校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:15:03