はじめまして。nao_yです。
Web開発をする傍ら、質問メールへの回答を通してPyQユーザの皆さんのPython学習をサポートしています。よろしくおねがいします。
「モジュール・オブジェクト・メソッドとはどのような概念なのでしょうか?」という質問をいただきました。これらは「クエスト 10-2: 現在の日付、時刻の表示」から導入される概念です。新しい概念が一度に3つも登場するので、戸惑う方もいるでしょう。今回はこれら3つの考え方と関係を解説します。
モジュール
まずは公式ドキュメントの解説を見てみましょう。
また、いくつかのプログラムで書いてきた便利な関数について、 その定義をコピーすることなく個々のプログラムで使いたいと思うかもしれません。 こういった要求をサポートするために、Python では定義をファイルに書いておき、 スクリプトの中やインタプリタの対話インスタンス上で使う方法があります。 (中略) モジュールは Python の定義や文が入ったファイルです。 ファイル名はモジュール名に接尾語 .py がついたものになります。
モジュールとは、便利な関数の塊を複数のプログラムから利用できるようにまとめたPythonファイルです。例えば、datetime
モジュールには日付や時間を扱う関数の定義がまとめられています。
関数の塊はこの後で説明するオブジェクトのことを指します。
Pythonらしく言うと役割毎にまとめられたオブジェクトの塊となります。
オブジェクト
オブジェクトは「データ」と「データを扱う関数」の塊です。
文字列やリスト、日付などのデータとそれらを処理する便利な関数がまとめられています。
例えばdatetime
モジュールのdatetime
オブジェクトには「2018年」や「2月」のようなデータと、日付や時間を処理する関数がまとめられています。
datetime
モジュールには他にも、二つの日付や時刻の差を扱うtimedelta
オブジェクトなどがあります。
参考: 公式ドキュメント-Python標準 ライブラリ-datetime
モジュールとオブジェクトの関係をまとめてみましょう。
- モジュール: 便利なオブジェクトをまとめたファイル(例:
datetime
)- オブジェクト: 便利な関数の塊
datetime
timedelta
- オブジェクト: 便利な関数の塊
メソッド
メソッドとはオブジェクト内で定義されている関数を指します。オブジェクトを便利な関数の塊と表現しましたが、メソッドが便利な関数です。
例えばdatetime
オブジェクトであれば、日時データを指定したフォーマットの文字列に変換するstrftime()
がメソッドにあたります。
strftime
メソッドで使う日時のフォーマットは以下が参考になります。
公式ドキュメント-datetime-strftime() と strptime() の振る舞い
まとめ
モジュール、オブジェクト、メソッドの関係をまとめてみましょう。
- モジュール: 便利なオブジェクトをまとめたファイル(例:
datetime
)- オブジェクト: 便利な関数の塊
datetime
- メソッド: 便利な関数
strftime()
- オブジェクト: 便利な関数の塊
実際に使ってみましょう。
# datetimeモジュールのdatetimeオブジェクトをインポートする from datetime import datetime dt = datetime(2018, 2, 20) dt.year # 2018というデータ dt.strftime('%Y-%m') # メソッド。'2018-02’という文字列を返す。
標準ライブラリ
Pythonには「battery included(電池が付属しています)」という思想があり、便利な機能がモジュールとしてたくさん提供されています(これらを標準ライブラリと呼びます)。datetime
モジュールもこの標準ライブラリに含まれています。
日時の処理やデータベース接続、ファイル操作などプログラムで使われることの多い機能が提供されているので、プログラマが本当に書きたい処理に集中しやすくなっています。
様々な標準ライブラリがありますので興味があったら調べてみてください。Pythonでできることの幅広さが見えてきます。難しい内容もありますが、眺めるだけで標準ライブラリで実現できることがたくさんあると実感できると思います。