0

strptime 関数に直接アクセスできるようにしたい (nodatetime.datetime.strptime()またはdatetime.strptime().)

私がすることができます:

from datetime import datetime
strptime = datetime.strptime

しかし、インポート行で同じことを達成する方法はありますか?

また、1行で複数の項目を行うことはできますか?

私が本当にやりたいことの擬似コードは次のとおりです。

from datetime.datetime import strftime, strptime

Datetime は単なる例です。同様のことは、他のライブラリにクラス メソッドをインポートする場合にも役立ちます。

4

2 に答える 2

1

これらはdatetimeタイプのメソッドであり、直接インポートすることはできません。モジュールの最上位の名前空間の下にあるものを直接インポートすることはできません。ドキュメントから:

フォームはモジュール名をバインドしません:from識別子のリストを調べ、手順 (1) で見つかったモジュール [つまり、インポートされるモジュール] でそれらのそれぞれを検索し、ローカル名前空間の名前をにバインドしますこうして見つかった物体。

つまり、インポートされた名前は、モジュールの名前空間内の名前でなければなりません。それ以上深くネストすることはできません。したがって、どうやらやりたいように、モジュール内のクラスの特定のメソッドだけをインポートすることはできません。

于 2013-06-02T22:22:58.223 に答える
0

「輸入ラインでやっていいの?」という疑問への答え。いいえ。

Python 2 の import ステートメントの定義を参照してください。このステートメントは、モジュールからものをインポートします。モジュールdatetime内にクラスがあります。datetimeあなたができる最善のことは

from datetime import datetime

質問で完全に使用したため、これが何をするのかをすでによく理解しています。やりたかったらしい

from datetime import datetime.strptime

datetime.strptimeしかし、これは識別子ではないため、構文エラーです。

あなたは言うことができません

from datetime.datetime import strptime

Python がという名前のモジュールdatetime.datetimeを探すためです。

import ステートメントは、思い通りに機能しません。

datetimeモジュールの作成者は、関数ではなく( を使用して)クラスメソッドstrptimeを作成することを選択したことに注意してください。したがって、クラス修飾子なしで使用したい場合は、行ったことを行う必要があります。つまり、という名前の変数に代入します。@classmethodstrptimestrptime

于 2013-06-02T22:22:47.593 に答える