Python & Raspberry Pi 開発ブログ ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbianを使用して開発中。

【スポンサーリンク】

python3:クラスの基本

【スポンサーリンク】

今回はクラスの書き方について紹介しようと思います。クラスの変数/メゾットのタイプとして、インスタンス、クラス、スタティックの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を付けます。あまり使う機会がないので、省略します。

pythonに戻る
トップに戻る