~~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}}