Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの静的メソッド(@staticmethod)とは?仕組みと使い方を解説

Pythonのクラスには、インスタンスメソッドクラスメソッド静的メソッド(スタティックメソッド)という3種類のメソッドを定義できます。それぞれ役割や呼び出し方が異なり、適切に使い分けることでコードの可読性と保守性が向上します。

3種類のメソッドの違い

  • インスタンスメソッド: 第1引数に self を受け取り、オブジェクト(インスタンス)の状態にアクセス・変更できます。
  • クラスメソッド: @classmethod デコレータを付け、第1引数に cls を受け取り、クラス自体の状態にアクセスできます。
  • 静的メソッド: @staticmethod デコレータを付け、selfcls も受け取りません。

コード例

以下のコードで、3種類のメソッドがどのように定義されるかを見てみましょう。

class OurClass:
    def method(self):
        return 'instance method called', self

    @classmethod
    def classmethod(cls):
        return 'class method called', cls

    @staticmethod
    def staticmethod():
        return 'static method called'

3番目のメソッド OurClass.staticmethod には @staticmethod デコレータが付いており、これによって静的メソッドとして扱われます。

静的メソッドの特徴

静的メソッドは selfcls のような特別な第1引数を受け取らず、代わりに任意の数の通常の引数を渡すことができます。

そのため、静的メソッドはオブジェクトの状態もクラスの状態も変更できません。アクセスできるデータが制限されており、主な用途はメソッドをクラス内で名前空間として整理することです。つまり、クラスに論理的に関連するユーティリティ関数をまとめるために使われます。

静的メソッドの呼び出し方

上記のコードの静的メソッドは、次のように呼び出せます。

>>> obj = OurClass()
>>> obj.staticmethod()
'static method called'

このように、インスタンスを作成してから呼び出すこともできますし、OurClass.staticmethod() のようにクラスから直接呼び出すことも可能です。

まとめ

静的メソッドは、インスタンスやクラスの状態に依存しない処理を定義するのに便利な機能です。「このクラスに関連するが、状態は必要ない」というヘルパー関数を配置する際に活用すると、コードの構造がより明確になります。

  1. Pythonの主なデータ型変換関数まとめ|int・float・str・listなどの使い方を実例付きで解説

    Pythonには、あるデータ型から別のデータ型へ値を変換するための組み込み関数が多数用意されています。この記事では、数値変換やコレクション変換に使える主要なデータ変換関数を、実際の実行例とともにわかりやすく解説します。 数値データの変換関数 int():整数への変換 浮動小数点数や、整数を表す文字列を整数(int)オブジェクトに変換します。文字列を変換する場合は、第2引数に基数を指定することで、8進数や16進数の文字列を整数に変換することもできます。 >>> int(11) 11 >>> int(11.15) 11 >>> int(2

  2. Pythonの予約キーワード(予約語)とは?一覧と確認方法をわかりやすく解説

    予約語(キーワード)とは予約語(reserved words)は「キーワード」とも呼ばれ、言語仕様の中であらかじめ意味と構文が定義された特別な単語のことです。条件分岐やループ処理といったプログラミング命令を記述する際には、必ずこれらのキーワードを使用します。重要なポイントとして、予約語は変数名や関数名など、他のプログラミング要素の識別子(identifier)として使用できません。例えば「def」や「import」という名前の変数を作成しようとすると、SyntaxError(構文エラー)が発生します。Python 3の予約キーワード一覧以下は、Python 3で定義されている予約キーワードの一