Pythonでクラスの理解は難しいですよね。
しかし一旦クラスを理解することができれば、自分で新しいクラスを定義して自在に利用できたり、便利な型や定数を拡張してプログラムの幅が大きく広がります。
今回は複数のクラスパターンを紹介し、それぞれ使い方等を紹介して行きます。
コンテンツ
環境
環境は以下になります。
環境
・python 3.8
クラスの基本パターン
まずは基本パターンから。
1 2 3 4 5 6 |
class Wizard(): def attack(self): print('fire attack!!') wizard = Wizard() wizard.attack() # fire attack!! |
Wizard(魔法使い)のインスタンスを生成し、attack(攻撃)メソッドを呼び出す例です。
定数で多いパターン
定数(不変の値)を最初に定義して、その後も利用するときは以下のようなコードを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 |
class Inquiry: Pending = 0 Ignore = 1 Completed = 2 INQUIRY_STATUA_CHOICES = [ (Pending, '未対応'), (Ignore, '無視する'), (Completed, '対応済') ] print(Inquiry.Pending) # 0 print(Inquiry.INQUIRY_STATUA_CHOICES[1][1]) # 無視する |
こうしておけば、好きな時に取り出したい値を取り出すことが可能です。
実際の開発の現場に入ると利用されることが多いです。
コンストラクタ
インスタンスが生成される時に自動的に呼び出されるメソッドのことをコンストラクタと呼びます。
インスタンスとは、クラスの定義内容に沿ったメソッドや変数を持っています。
1 2 3 4 5 6 7 8 9 |
class Test: def __init__(self, num): self.num = num def print_num(self): # メソッド print('引数で渡された数字は{}'.format(self.num)) test = Test(10) test.print_num() # 引数で渡された数字は10 |
コードを実行すると、インスタンスを生成することでTestのコンストラクタが呼び出されます。
継承
クラスを定義する際にクラス名の後に(クラス名)を付けると、その(クラス名)の性質を継承したサブクラスを定義できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Test: def __init__(self, num): self.num = num def print_num(self): # メソッド print('引数で渡された数字は{}'.format(self.num)) # クラスの継承 class Test2(Test): def print_test2_info(self): print('このクラスはTestクラスを継承しています') super().print_num() # 親クラスのprint_num()を呼び出す test = Test(10) test.print_num() test = Test2(20) test.print_test2_info() |
このコードでは9行目でTest2クラスが(Test)クラスを継承し、Testクラスを継承した内容を中身の関数で走らせています。
最後に
いかがでしたでしょうか。
以上が、「Pythonのクラスを理解する」の紹介記事になります。
こちらの記事は引き続き更新して行きます。
コメントを残す