Python

Python初学者向け:スタティックメソッドを基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ クラスの基本から学びたい場合は以下の投稿を参考にしてください。

はじめに

今回はスタティックメソッドについて基本から解説します。はじめにクラスの解説をしたときにメソッドには「インスタンスメソッド」「クラスメソッド」「スタティックメソッド」があることをお伝えしました。前回はこの違いなどには触れなかったので、まずは、これらの違いを整理するところからはじめます。その後、「スタティックメソッド」に絞って基本から解説をします。

クラスの持つ3つのメソッド

まず3つのメソッドの違いを整理しておきましょう。

  • インスタンスメソッド
    インスタンスに紐づいたデータを使って何らかの処理をおこなうメソッド
  • クラスメソッド
    クラスに紐づいたデータを使って何らかの処理をおこなうメソッド
  • スタティックメソッド
    インスタンスに紐づいたデータを使って何らかの処理をおこなうメソッド

一度説明を聞くと、名前の通りなんだな、という感じですね。インスタンスメソッドはインスタンスの情報を使う、クラスメソッドはクラスの情報を使う、すたひっくメソッドはインスタンの情報もクラスの情報も使わない、ということです。いま、定義したい処理がどんな情報を使うのかによって使い分ければよいのですね。

スタティックメソッド

スタティックメソッドの作成

スタティックメソッドは@staticmethodというデコレータを使って定義します。スタティックメソッドはインスタンスに紐づかない、つまりインスタンスの情報を使わないので、引数にselfという引数をとりません。

前回の「インスタンス変数とクラス変数」の記事の中で定義したAnimalというクラスにスタティックメソッドを付け加えてみましょう。

class Animal:
    count=0
    
    def __init__(self,name,age,weight):
        self.name=name
        self.age=age
        self.weight=weight
        self.count=Animal.count
        Animal.count+=1
    
    @staticmethod
    def welcome():
        print('どうぶつえんへようこそ')

11~13行目の部分がスタティックメソッドの定義です。12行目のdefのところではselfというキーワードを摂らないことに注意してください。また、11行目で@staticmethodというデコレータを使っています。

スタティックメソッドをコールする

スタティックメソッドは<クラス名>.<スタティックメソッド名>()のようにクラス名でコールします。インスタンスの情報を使わないので、インスタンスを作る必要がない、というわけですね。
※<インスタン名>.<スタティックメソッド名>()でコールすることもできるけど、回り道になる

やってみましょう。

Animal.welcome()
スタティックメソッドの呼び出し

ちゃんと呼び出せましたね!簡単だ!

スポンサーリンク

まとめ

今回はスタティックメソッドを扱いました。まとめておきましょう。

  • スタティックメソッドはインスタンスに紐づかないメソッド
  • 定義するときには@staticmethodというデコレータを使い、引数にselfを指定しない
  • 呼び出すときには<クラス名><スタティックメソッド名>()で呼び出す

コメント

タイトルとURLをコピーしました