質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

7539閲覧

pythonで現在の年月日を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/12/15 02:54

pythonで現在の年月日を取得したいのですが、上手くいきません。
何方かアドバイスいただけないでしょうか?

import datetime

a_today = datetime.date.today()
print(a_today)

ネット等見るとこれで大丈夫そうなのですが、
AttributeError: 'method_descriptor' object has no attribute 'today'
と言うエラーが出てしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

importを書き間違えていると思われます。

質問文のコード通りに実行すると上手くいきましたが、datetime.date.today()ではなくdatetime.datetime.date.today()を呼び出そうとすると同様のエラーが再現しました。

python

1>>> import datetime 2>>> datetime.date.today() # OK 3datetime.date(2018, 12, 15) 4>>> from datetime import datetime 5>>> datetime.date.today() # NG 6Traceback (most recent call last): 7 File "<stdin>", line 1, in <module> 8AttributeError: 'method_descriptor' object has no attribute 'today'

ややこしいですがdatetimeモジュールには同名のdatetimeクラスが定義されており、datetimeモジュール直下にはdateクラスが、datetime.datetimeクラスの下にもdateメソッドがあります。メソッドのオブジェクトに対してtoday属性を呼ぼうとし、やっと質問文通りのエラーになります。

参考:https://docs.python.jp/3/library/datetime.html

投稿2018/12/15 03:13

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2018/12/15 03:17

これに関しては純粋にdatetimeモジュールの作りが悪いとしか思えない。同じ名前空間なのにどうしてモジュール名と同じクラス名なんか付けたんだろう。java的な慣習を引きずったのかもしれないけど、使い方が違うのに。迷惑すぎる
退会済みユーザー

退会済みユーザー

2018/12/15 03:26

もう一度やったらキチンと動作しました。 何だったのでしょうか?
hayataka2049

2018/12/15 03:30

たとえば、私の回答の例にあるように import datetime from datetime import datetime を実行すると、後に実行されたfrom ...でimportされたdatetimeクラスがdatetimeという名前にひも付きます。なので、この状態でプログラムを実行していた可能性があります。
hayataka2049

2018/12/15 03:50

あとはjupyterなど通常とは異なる方法で実行している場合、意図しない形でimportの履歴などが残っている可能性があります
guest

0

こちらではうまく行くようですが・・・環境(OS等)は?
usr~/test/py % py today.py
2018-12-15
usr~/test/py % cat today.py
import datetime
a_today = datetime.date.today()
print(a_today)

usr~/test/py % py --version
Python 3.7.0

投稿2018/12/15 03:09

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2018/12/15 03:11

こちらの環境はLInux mint 18.3です
退会済みユーザー

退会済みユーザー

2018/12/15 03:15

Python 3.6.7 mac anacondaを使用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問