这是我的事务类:

class Transaction(object):
    def __init__(self, company, num, price, date, is_buy):
        self.company = company
        self.num = num
        self.price = price
        self.date = datetime.strptime(date, "%Y-%m-%d")
        self.is_buy = is_buy

当我试图运行date函数时

tr = Transaction('AAPL', 600, '2013-10-25')
print tr.date

我得到以下错误:

   self.date = datetime.strptime(self.d, "%Y-%m-%d")
 AttributeError: 'module' object has no attribute 'strptime'

我该怎么解决呢?


使用正确的调用:strptime是datetime的类方法。Datetime类,它不是Datetime模块中的函数。

self.date = datetime.datetime.strptime(self.d, "%Y-%m-%d")

正如Jon Clements在评论中提到的,有些人会从datetime导入datetime,这将把datetime名称绑定到datetime类,并使您的初始代码工作。

要确定您(将来)面临哪种情况,请查看导入语句

导入datetime:这就是模块(这就是你现在拥有的)。 From datetime import datetime:这是类。


要我猜的话,你是这么做的

import datetime

在代码的顶部。这意味着你必须这样做:

datetime.datetime.strptime(date, "%Y-%m-%d")

访问strptime方法。或者,你可以把import语句改成这样:

from datetime import datetime

以你自己的身份访问它。

创建datetime模块的人也将他们的类命名为datetime:

#module  class    method
datetime.datetime.strptime(date, "%Y-%m-%d")

我也遇到了同样的问题,但这不是你告诉我的解决方案。所以我把“from datetime import datetime”改成了“import datetime”。在那之后 “datetime”的帮助。datetime“我可以正确地获得整个模块。我想这就是那个问题的正确答案。


根据使用情况,值可能不同。

import datetime
date = datetime.datetime.now()
date.strftime('%Y-%m-%d') # date variable type is datetime

date变量的值必须为字符串::

date = '2021-09-06'
datetime.datetime.strptime(date, "%Y-%m-%d")
str(datetime.datetime.strptime(date, "%Y-%m-%d")) # show differently

其他人提到的解决方案是正确的。但对我来说,这是另一个库为我导入datetime模块和覆盖我正在导入的datetime类的问题。 蔡图书馆的一个例子:

from datetime import datetime
from tsai.all import *

这将给你一个错误:'module'对象没有'strptime'属性。

在这种情况下,只需翻转导入顺序或不导入所有内容(即使文档这样做):

from tsai.all import *
from datetime import datetime