这是我的事务类:
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")
其他人提到的解决方案是正确的。但对我来说,这是另一个库为我导入datetime模块和覆盖我正在导入的datetime类的问题。
蔡图书馆的一个例子:
from datetime import datetime
from tsai.all import *
这将给你一个错误:'module'对象没有'strptime'属性。
在这种情况下,只需翻转导入顺序或不导入所有内容(即使文档这样做):
from tsai.all import *
from datetime import datetime