私的AI研究会 > Python覚書2

関数・モジュール

ファイル内の作成関数(モジュール)

実行結果

$ python test.py 1 2
$ 3

同じディレクトリ内の作成関数

実行結果

$ python test2.py
3
1

パッケージ化

実行結果

$ python test2.py
3
1

モジュールのインポート

多機能パッケージ

 パッケージのインポート方法

 timeモジュールのsleepという関数を使用する場合の例

どの読み込み方法でも同じ結果。

利用可能な汎用モジュール

組み込みモジュール

 

Python クラス

クラス定義

コンストラクタ

実行結果

init:[]
test_method2:[1, 2, 3]
  • コーディング例 (コンストラクタに引数を渡す場合)
    class TestClass3:
        val = []
        def __init__(self, val1, val2):
            # 初期化
            self.val.append(val1)
            self.val.append(val2)
            print("init:" + str(self.val))
    
    testClass3 = TestClass3(1, 2)

実行結果

init:[1, 2]
  • コンストラクタがない場合、何もしないコンストラクタが定義されていると同義。

デストラクタ

実行結果

del:デストラクタ
  • 「仕様上、プロセス終了までにデストラクタが必ず呼び出される保証がない」「複数のオブジェクトが相互作用する場合、どのオブジェクトのデストラクタを先に実行するか決定できないため挙動が怪しくなる」などの理由で、ほとんどの場合デストラクタは定義しない。

継承

実行結果

Parent
Child
ParentMethod:Parent
ChildMethod:Child
  • 作成したChildインスタンスでは、Childクラスの変数、メソッドだけでなくParentクラスの変数、メソッドも使用できる。
  • Childクラスのメソッド内からもParentクラスの要素を呼び出すことができる。
  • 継承元と継承先に同じ名前の変数、メソッドが定義されている場合、作成したインスタンスのクラスの内容が優先される。ただし、継承先のメソッド内からは、継承元の変数、メソッドを「super().」という修飾子を付けることで呼び出すことが可能。
  • コンストラクタは作成したインスタンスのコンストラクタのみ呼び出される。
    継承元クラスのコンストラクタを呼び出したいときは、継承先のコンストラクタ内で継承元のコンストラクタを呼び出す。
    class Parent:
        def __init__(self):
            print("Parentコンストラクタ")
    
    class Child(Parent):
        def __init__(self):
            super().__init__()
            print("Childコンストラクタ")

多重継承

privateとpublic

staticメソッド、classメソッド

staticメソッド

classメソッド

staticメソッド、classメソッド使い分け

クラス内で定義できる変数 (メンバー変数・インスタンス変数)

 

参考資料


Last-modified: 2021-01-22 (金) 09:50:19