Python 中 TypeError: 'datetime.datetime' object is not callable 错误
当我们覆盖 datetime
模块中的内置类或方法时,会出现 Python“TypeError: 'datetime.datetime' object is not callable”。 要解决该错误,需要解决变量和内置类之间的名称冲突。
下面是一个产生上述错误的示例代码
from datetime import datetime, date
# 👇️ override built-in date() class by mistake
date = datetime.today()
result = date(2022, 9, 24)
# ⛔️ TypeError: 'datetime.datetime' object is not callable
print(result)
我们通过将其设置为日期时间对象来隐藏内置日期类,并尝试将其作为函数调用。
但是,现在
date
变量存储的是datetime
对象,而不是内置类。
要解决该错误,需要确保不要覆盖 datetime
模块中的任何内置方法和类。
from datetime import datetime, date
# ✅ Renamed variable
my_date = datetime.today()
result = date(2022, 9, 24)
print(result) # 👉️ "2022-09-24"
重命名变量应该可以解决问题。
该错误的另一个常见原因是试图将日期时间对象当作函数来调用。
from datetime import datetime
my_date = datetime.today()
# ⛔️ TypeError: 'datetime.datetime' object is not callable
my_date() # 👈️ remove extra set of parentheses
要解决该错误,我们必须弄清楚如何为变量分配日期时间对象而不是函数或类,或者删除额外的括号集。
from datetime import datetime, date
my_date = datetime.today()
print(my_date) # 👉️ "2022-12-29 14:52:21.292423"
当我们打算访问对象的属性时,可能会错误地尝试调用 datetime
对象。
开始调试的最佳方法是调用 dir()
函数,将导入的模块传递给它。
from datetime import datetime
# 👇️ [...'astimezone', 'combine', 'ctime', 'date', 'day',
# 'dst', 'fold', 'fromisocalendar', 'fromisoformat',
# 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar',... ]
print(dir(datetime))
如果将模块对象传递给 dir()
函数,它会返回模块属性名称的列表。
我们可以使用点表示法来访问日期时间对象支持的任何属性。
from datetime import datetime
d = datetime(2022, 11, 24, 9, 30, 0)
# 👇️ 24/11/22
print(d.strftime("%d/%m/%y"))
print(d.year) # 👉️ 2022
print(d.month) # 👉️ 11
或者,如果我们不打算访问属性,则可以删除方括号。
相关文章
Python for 循环中的下一项
发布时间:2023/04/26 浏览次数:179 分类:Python
-
本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。
Python While 循环用户输入
发布时间:2023/04/26 浏览次数:148 分类:Python
-
我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。
在 Python 中将整数转换为罗马数字
发布时间:2023/04/26 浏览次数:87 分类:Python
-
本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
在 Python 中将罗马数字转换为整数
发布时间:2023/04/26 浏览次数:144 分类:Python
-
本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。
在 Python 中读取 gzip 文件
发布时间:2023/04/26 浏览次数:70 分类:Python
-
本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。
在 Python 中锁定文件
发布时间:2023/04/26 浏览次数:141 分类:Python
-
本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等
在 Python 中将 PDF 转换为文本
发布时间:2023/04/26 浏览次数:196 分类:Python
-
在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。
在 Python 中创建临时文件
发布时间:2023/04/26 浏览次数:53 分类:Python
-
本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。