▶ クラスの基本から学びたい場合は以下の投稿を参考にしてください。
はじめに
今回はスタティックメソッドについて基本から解説します。はじめにクラスの解説をしたときにメソッドには「インスタンスメソッド」「クラスメソッド」「スタティックメソッド」があることをお伝えしました。前回はこの違いなどには触れなかったので、まずは、これらの違いを整理するところからはじめます。その後、「スタティックメソッド」に絞って基本から解説をします。
クラスの持つ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()
ちゃんと呼び出せましたね!簡単だ!
まとめ
今回はスタティックメソッドを扱いました。まとめておきましょう。
コメント