スタティックメソッド
自身の所属するクラスについての情報を持たないメソッドのことをスタティックメソッド/静的メソッドという。
数学における正弦関数$ \sin( )のような処理は内部状態を保持する必要が無いため、いっぱんには関数を用いて実装されるが、何らかの目的のために、その機能をあるクラスにまとめる必要がある場合にはスタティックメソッドとして実装する 特徴:
クラスに属し、インスタンス化することなく利用できる
自身が属するクラスに関する情報を持たない
https://scrapbox.io/files/6528e97a065dc8001c0d735b.png
スタティックメソッドの定義
スタティックメソッドはデコレータ「@staticmethod」を用いて定義する。インスタンスメソッドやクラスメソッドと違い、第1引数に自身が所属するスコープに関する引数(selfやcls)をもたない。
code:stat.py
class Myclass:
@staticmethod
def method2():
print('スタティックメソッドです')
Myclass.method2()
クラスメソッドと同様に。インスタンス化することなく呼び出すことができる。 自身が属するスコープに関する情報を持たない点はただの関数と同じである。それなら関数を用いればよいのではと思われるが、何らかの目的のために1つのクラスにまとめて管理できるという利点を挙げることができる。
code:ex.py
def func1():
print('ある関数')
def func2():
print('その関数')
func1()
func2()
上のように書くと、それぞれの関数がバラバラに作られることになり、関数func1, func2は関連するものであることをプログラムから読み取ることができない。これを、
code:ex.py
class Myclass:
@staticmethod
def func1():
print('ある関数')
@staticmethod
def func2():
print('その関数')
Myclass.func1()
Myclass.func2()
という具合に、1つのクラスにまとめて格納することで、これらのメソッドが「Myclassの仲間」であることが読み取れるようになる。
/icons/hr.icon
※ ブラウザのバックボタンで戻る