三歩あるけば物も忘れる

私メタボックル!お腹のお肉の妖精さ!

ユーザ用ツール

サイト用ツール


DevelopmentLanguage:Python:Basics06

6.基本編-クラス(Python)

クラスの構造

・クラスの(object)は付けても付けなくても良い
・クラスのメソッドの場合「self」は第一引数に必ず付ける
・デストラクタ「del」は、オブジェクト(インスタンス)が使われなくなった時点で実行される

サンプル

class my_status(object):                      # クラス
    def __init__(self, age, name, weight):    # メソッド(コンストラクタ)
        self.age = age
        self.name = name
        self.weight = weight

    def print_name(self):                     # メソッド
        return self.name

    def print_age(self):                      # メソッド
        return self.age

    def print_weight(self):                   # メソッド
        return self.weight
        
if __name__ == '__main__':
    a = my_status(36, "mnz", 62)              # インスタンス
    print(a.print_age())

処理の流れ

関数と違い、関数はの関数内の処理がすべて実行されるが、クラスは「init」で、インスタンス生成時に実行する初期化処理として記述できる。

クラスの継承

クラスを継承することで、他クラスで定義したメソッドを利用できる。

サンプル

class status(object):                      # クラス
    def print_status(self):                # メソッド
        print('cold')

class mnz_status(status):                  # クラスstatusを継承
    pass

if __name__ == '__main__':
    mnz = mnz_status()
    mnz.print_status()

メソッドのオーバーライド

継承したクラスのメソッドをオーバーライドできる。

サンプル

class status(object):                      # クラス
    def print_status(self):                # メソッド
        print('cold')

class mnz_status(status):                  # クラスstatusを継承
    def print_status(self):                # メソッドのオーバーライド
        print('cheerful')

if __name__ == '__main__':
    mnz = mnz_status()
    mnz.print_status()

super()親クラスのメソッドを呼び出す。

親クラスのメソッドを呼び出したいときは以下のようsuper()を使います。
super()は「init」メソッド内でも使えます。

サンプル

class status(object):                         # クラス
    def __init__(self, name=None):            # メソッド(コンストラクタ)
        self.name = name

    def print_status(self):                   # メソッド
        print(self.name, 'cold')

class mnz_status(status):                     # クラスstatusを継承
    def __init__(self, name=None):
        super().__init__(name)                # 親クラスのメソッドを呼び出す。

    def print_status(self):
        super().print_status()                # 親クラスのメソッドを呼び出す。

if __name__ == '__main__':
    mnz = mnz_status('mnz')
    mnz.print_status()

DevelopmentLanguage/Python/Basics06.txt · 最終更新: 2023/01/07 by admin