クラス・モジュール・パッケージ

パッケージとはモジュールをまとめたものになります。
モジュールとはクラス・関数・変数などをひとつのまとまりにして部品として扱うものをいいます。
クラスとは関数・変数などをひとつのまとまりにしたものです。

クラス

クラス内に記述する関数をメソッドと呼び、クラス内のものをデータやメソッドで呼び出して実体化したもののことをインスタンスといいます。
ひとつのクラスで複数のインスタンスを生成することができて、インタンス毎に別のデータが保持できます。
クラスは最初に「class」で宣言を行い、その後にデータやメソッドを定義します。
以下のように記載して実行します。

class TestClass:
name = ""
def __init__(self,name):
self.name = name
def printexec(self):
print(self.name)

「def __init__(self,name):」のメソッドはインスタンス生成時に呼び出されるメソッドです。
定義だけですので、特に何か処理が走るわけではありません。
前述しているようにクラスはインスタンス化してメソッドで処理します。
コードを追加して以下のように記載して実行します。

test=TestClass('Hello World')
test.printexec()
test.name=123
test.printexec()

1行目の「'Hello World'」でクラスデータの「name」が初期化されます。
2行目の「test.printexec()」でメソッドが呼び出されますので、インスタンス時に初期化された「'Hello World'」が表示されます。
3行目の「test.name=123」でクラスデータの「name」を「123」に変更しています。
4行目のメソッドで変更したクラスデータの「123」が表示されます。

__new__や__init__はクラスのインスタンスが生成時に呼ばれ、自動的に実行されるメソッドで、これをコンストラクタといいます。
違いは、__new__はインスタンスが生成時に必ず呼ばれますが、__init__は呼ばれない場合もあります。
__del__はインスタンスが消滅した時に呼ばれて、これをデストラクタといいます。

クラスには継承があり、これは継承元のクラスのデータやメソッドを継承先でも使用できるようにすることです。
クラスを作成する場合、現実世界に見立てるといいといわれています。
例えば、車クラスなら部品としてタイヤや種類としてトラック・バスなどを考えます。

モジュール

モジュールを作成するには「〇〇.py」ファイル(スクリプトファイル)を作成してimport文で読み出します。
読み込んだモジュールのクラス・関数・変数などは、「モジュール名.識別子」で参照できます。
GoogleDriveの直下に「module」フォルダを作成して、フォルダの配下に「testmodule.py」のテキストを作成して以下を記載してください。

def test(n):
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b

実際にGoogle Colaboratryでモジュールを読み込みます。
以下を入力して実行してください。

import sys
import os
from google.colab import drive
drive.mount('/content/drive')
os.chdir('/content/drive/My Drive/module')

ダイアログが表示されますので、「接続」を押下してアカウントを選択して「許可」をクリックします。
「Mounted at /content/drive」と表示されればマウントできています。

以下のように入力して実行してください。

import testmodule
testmodule.test(2)

「0 1 1 」が表示されます。
ファイル名である「testmodule」をモジュールとして読み込み、モジュールの関数である「test」を実行しています。
importでモジュール(ファイル名)を記述して、モジュール名.関数()で実行するような流れです。

パッケージ

パッケージとはモジュールを呼び出すときに複数のスクリプトファイルを同時に呼び出したいときに利用します。
モジュールをGoogle Colaboratryで呼び出すためにディレクトリを指定しましたが、そちらがパッケージです。
サブフォルダなどはドットで追加していきます。