はじめに
Pythonを前提に話をすすめていきます。たぶん。
とりあえず用語をまとめて最後に包含関係をまとめます。
クラス
クラスは属性をもっています。
属性とはデータ属性とメソッドのことです。
データ属性
クラスにあるデータ(変数)のことです。
データメンバ(C++)とかフィールド(Java)とかプロパティ(JavaScript)みたいなやつ。
いろんな言語でいろんな呼び方するから何が何だかって感じですね。
メソッド
クラスにある関数のことです。
いろんな処理をする子ですね。
モジュール
拡張子が.py
のPythonファイルのこと。
このファイルにいろんな定義(変数や関数)が書かれています。
他には実行文(モジュールを初期化するためのもの)も書かれています。
パッケージ
複数のモジュールをひとまとめにしたもの。
モジュール名前空間を "ドット付きモジュール名" を使って構造化する手段
https://docs.python.org/ja/3/tutorial/modules.html#packages
つまりこのパッケージのおかげでいろんなモジュールが参照できて、同じ名前の関数とかがあっても上手くつかえるってわけですね。ありがたやありがたや。
ちなみに、pip
はパッケージ管理ツールです。
ライブラリ
複数のパッケージをひとつにまとめたもの。
包含関係
ライブラリ ⊇ パッケージ ⊇ モジュールって感じですね。
何が紛らわしかったのか
ドット演算子でモジュールを参照できるのが、オブジェクトの参照っぽくてクラスと似てたことですかね。
あとは名前が多すぎってことですかね。
参考
Python公式ドキュメント(日本語)
なんか違う気がするけど一応参考にさせていただいた
Python におけるモジュールとパッケージは「名前空間」