AttributeError: 'datetime' module has no attribute '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

回答:


384

私が推測しなければならないなら、あなたはこれをしました:

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

12
コロンビアのコロンビアの町を
思い出してください

16

正しい呼び出しを使用してください:クラスのクラスstrptimeメソッドでありdatetime.datetimedatetimeモジュール内の関数ではありません。

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

コメントの中でジョン・クレメンツで述べたように、一部の人々が行うfrom datetime import datetime、結合するであろうこれdatetimeに名前をdatetimeクラスに最初のコードが機能します。

現在直面しているケースを特定するには、インポートステートメントを確認します

  • import datetime:これがモジュールです(これが現在のモジュールです)。
  • from datetime import datetime:それがクラスです。

悲しいことに-誰か他の人のコードベースを適応させている場合-一部の人が行うのは珍しいことではなくfrom datetime import datetime、他のシステムにとってはimport datetime、それdatetimeがモジュールであると期待しているだけです...;)
Jon Clements

1

私は同じ問題を抱えており、あなたが言った解決策ではありません。そこで「datetimeインポート日時」から「インポート日時」に変更しました。その後、「datetime.datetime」を使用して、モジュール全体を正しく取得できます。これがその質問に対する正しい答えだと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.