212

这是我的Transaction课:

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'

我该如何解决?

4

4 回答 4

505

如果我不得不猜测,你是这样做的:

import datetime

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

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

访问该strptime方法。或者,您可以将导入语句更改为:

from datetime import datetime

并按原样访问它。

制作该datetime模块的人也将他们的班级datetime命名为:

#module  class    method
datetime.datetime.strptime(date, "%Y-%m-%d")
于 2013-10-20T16:46:37.710 回答
21

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

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

正如 Jon Clements 在评论中提到的那样,有些人会这样做from datetime import datetime,这会将datetime名称绑定到datetime类,并使您的初始代码正常工作。

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

  • import datetime: 这就是模块(这就是你现在拥有的)。
  • from datetime import datetime: 就是这个类。
于 2013-10-20T16:46:02.710 回答
3

我遇到了同样的问题,这不是您所说的解决方案。所以我将“从日期时间导入日期时间”更改为“导入日期时间”。之后在“datetime.datetime”的帮助下,我可以正确获取整个模块。我想这是该问题的正确答案。

于 2020-03-14T22:42:59.707 回答
1

值可能因使用情况而异。

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

日期变量的值必须是字符串::

date = '2021-09-06'
datetime.datetime.strptime(date, "%Y-%m-%d")
str(datetime.datetime.strptime(date, "%Y-%m-%d")) # show differently
于 2021-09-06T06:34:45.630 回答