AttributeError:“ datetime”模块没有属性“ strptime”


153

这是我的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'

我该如何解决?


13
from datetime import datetime
Ashwini Chaudhary

Answers:


384

如果我不得不猜测,您这样做:

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")

12
哥伦比亚哥伦比亚镇的提醒:en.wikipedia.org/wiki/
_Huila

16

使用正确的调用: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:那是课程。

令人遗憾的是-如果您要适应其他人的代码库-对于某些from datetime import datetime人和其他系统来说这并不少见,import datetime因为它只是一个预期datetime的模块...;)
乔恩·克莱门茨

1

我遇到了同样的问题,这不是您告诉的解决方案。因此,我将“从datetime导入datetime”更改为“ import datetime”。之后,借助“ datetime.datetime”,我可以正确获取整个模块。我想这是对该问题的正确答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.