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

如何修复Python datetime对象不可调用的TypeError报错

错误原因

这个报错本质是把存了值的属性当方法调用了:

  • 构造方法__init__里self.startDate = datetime.datetime.now()这行,执行时会立刻调用now()拿到一个datetime.datetime类型的时间实例,把这个实例直接绑定为self.startDate属性。这时候startDate就是个存了具体时间值的变量,根本不是可以加括号调用的函数/方法。
  • 最后打印的时候写了ts.startDate(),硬要给这个时间实例加括号当函数跑,Python不认,自然就抛TypeError: 'datetime.datetime' object is not callable的错。
    另外你代码第一行的shebang少了开头的#,属于笔误,运行时也会触发语法错误。
修复方案

根据你要实现的逻辑选对应改法即可:

方案1:记录系统启动的固定时间

如果startDate的作用是存交易系统启动那一刻的固定时间,改两个地方就行:

  1. 第一行补全shebang的#,写成#!/usr/bin/python3
  2. 打印的时候把ts.startDate()末尾的括号删掉,直接访问属性值

改完的可运行代码:

#!/usr/bin/python3
import datetime
import os
 
class TradingSystem:
    def __init__(self):
        self.startDate = datetime.datetime.now()

ts = TradingSystem()
print("Started trading system, date: {}".format(ts.startDate))

方案2:每次访问都获取当前最新时间

如果你想要每次取startDate都拿到调用时刻的最新时间,就别在构造方法里把它存成固定属性,直接定义为实例方法就行,这时候加括号调用才是正确写法:

#!/usr/bin/python3
import datetime
import os
 
class TradingSystem:
    def startDate(self):
        return datetime.datetime.now()

ts = TradingSystem()
print("Started trading system, date: {}".format(ts.startDate()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:57:10