~~NOCACHE~~ ## 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__」で、インスタンス生成時に実行する初期化処理として記述できる。 {{:DevelopmentLanguage:Python:pasted:20230106-012903.png?direct 400x0}} ### クラスの継承 クラスを継承することで、他クラスで定義したメソッドを利用できる。 #### サンプル 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() {{tag>Python}}