python3:クラスの基本
ブログ管理者のP.Hです!
今回はクラスの書き方について紹介しようと思います。クラスの変数/メゾットのタイプとして、インスタンス、クラス、スタティックの3つがあります。スタティッククラスはあまり使う機会がないと思いますので、インスタンスとクラス変数/メゾットの書き方を記載したいと思います。
クラスの構文
インスタンス変数/メゾット(ほぼこれを使います。)
オブジェクト指向言語でコードを書いている方は、特に難しいところはないと思います。メゾットの第一引数にはself
付けます。selfは自分自身のクラスの参照ですね。インスタンス化して使用しますので、いくつでもインスタンス化できます。
class MyClass: # クラス def __init__(self):#コンストラクタ self.name = "" # インスタンス変数 def set(self, name): # インスタンスメゾット self.name = name def get(self): # インスタンスメゾット return self.name a = MyClass() # クラスをインスタンス化 a.set("A") # "A"という名前をセット print(a.get()) # セットした名前を表示 b = MyClass() # 複数インスタンスを作ることができます。 b.set("B") print(b.get())
クラス変数/メゾット
クラス変数/メゾットですが、私はあまり聞きなれない言葉だったのですが、言い換えれば半分静的変数/メゾット、というニュアンスでしょうか。クラスメゾットは関数の前に@classmethodを付けて、メゾットの第一引数にclsを付けます。
class MyClass: # クラス name_class = "classTest" # クラス変数 @classmethod def get(cls): # クラスメゾット return cls.name @classmethod # クラスメゾット def set(cls, name): cls.name = name print(MyClass.name_class) # インスタンス化しなくても、クラス名.クラス変数でアクセスできる MyClass.set("A") # インスタンス化しなくても、クラス名.クラスメゾットで実行できる print(MyClass.get())
スタティックメゾット
スタティックメゾットの書き方はクラスメゾットとほぼ同じで、関数の前に@staticmethodを付けます。あまり使う機会がないので、省略します。