Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

モジュール・オブジェクト・メソッドとはどのような概念なのでしょうか?への回答

f:id:nana_yu:20180502143157p:plain

f:id:nana_yu:20180427091332p:plain
nao_y はじめまして。nao_yです。

Web開発をする傍ら、質問メールへの回答を通してPyQユーザの皆さんのPython学習をサポートしています。よろしくおねがいします。

「モジュール・オブジェクト・メソッドとはどのような概念なのでしょうか?」という質問をいただきました。これらは「クエスト 10-2: 現在の日付、時刻の表示」から導入される概念です。新しい概念が一度に3つも登場するので、戸惑う方もいるでしょう。今回はこれら3つの考え方と関係を解説します。

モジュール

まずは公式ドキュメントの解説を見てみましょう。

公式ドキュメント-Pythonチュートリアル-モジュール

また、いくつかのプログラムで書いてきた便利な関数について、
その定義をコピーすることなく個々のプログラムで使いたいと思うかもしれません。
こういった要求をサポートするために、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でできることの幅広さが見えてきます。難しい内容もありますが、眺めるだけで標準ライブラリで実現できることがたくさんあると実感できると思います。

公式ドキュメント-Python 標準ライブラリ

Copyright ©2017- BeProud Inc. All rights reserved.