• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Python / Pythonの各メソッド(インスタンスメソッド、クラスメソッド、スタティックメソッド)の使用方法をまとめました

Pythonの各メソッド(インスタンスメソッド、クラスメソッド、スタティックメソッド)の使用方法をまとめました

1 インスタンスメソッドの使い方
2 クラスメソッド(@classmethod)の使い方
3 スタティックメソッド(@staticmethod)の使い方
4 関連記事

インスタンスメソッドの使い方

pythonには、インスタンスメソッド、クラスメソッド、スタティック(静的)メソッドの3つのメソッドがある。

それぞれ、以下のように定義される。

    各メソッドの定義方法
class MyClass:
    def method(self): # インスタンスメソッド
        return 'インスタンスメソッドの実行', self

    @classmethod
    def classmethod(cls): # クラスメソッド
        return 'クラスメソッドの実行', cls

    @staticmethod
    def staticmethod(): # スタティックメソッド
        return 'スタティックメソッドの実行'

インスタンスメソッドとは、最も基本的で、よく利用されるメソッドである。
実行するにはインスタンス化する必要があり、パラメータの第1引数のselfは実行するインスタンス自身を指す

selfは、インスタンスの持っているプロパティやメソッドにアクセスして、値を書き換えることができる。
また、self.__class__としてクラス変数にアクセスすることもできる。

  • インスタンスメソッドの利用
class MyClass:
    def method(self): # 第1引数はself
        print('インスタンスメソッドの実行')

MyClass.method() # クラスから直接呼び出さない
my_class = MyClass()
my_class.method() # インスタンス化してからインスタンスメソッドは呼び出す

  • selfの利用1
class MyClass:

    def method(self):
        print(self.val) # インスタンスのプロパティvalにアクセス

my_class = MyClass()
my_class.val = 'val' # インスタンスのプロパティvalに値を設定
my_class.method() # 「val」と表示

  • selfの利用2
class MyClass:

    def __init__(self, val):
        self.__val = val

    def method(self):
        print(self.__val) # プロパティにアクセス
        self.__method_b() # インスタンスのメソッド__method_bを実行

    def __method_b(self):
        print('method b')

my_class = MyClass('プロパティ') # __init__で__valに「プロパティ」を設定
my_class.method()

クラスメソッド(@classmethod)の使い方

クラスメソッドは、MyClass.classmethodとしてクラスをインスタンス化せずに実行するメソッドのことを言う。

クラスメソッドは、@classmethodを付けて定義し、第1引数にclsを与える。
clsは、クラスオブジェクトを指す。

clsでは、インスタンスのプロパティを変更はしない。クラス変数など、クラスの状態を変更する。
(インスタンス変数とクラス変数について)

class Spam:
  @classmethod # クラスメソッドとして定義
  def clsmethod(cls): # クラスメソッドは第1引数をclsにする

    クラスメソッドの定義(@classmethod)
class Human:
    name = "Taro" # クラス変数

    def __init__(self, age):
        self.age = age # インスタンス変数

    @classmethod
    def print_name(cls): # クラス変数
        print("名前は{}です。".format(cls.name)) # クラス変数にアクセス
        print("年齢は{}です。".format(cls.age)) # クラスメソッドからはインスタンス変数にアクセスする

Human.print_name() # 「名前はTaroです。」と表示
Human.name = "Jiro" # クラス変数の変更
Human.print_name() # 「名前はJiroです。」と表示される

スタティックメソッド(@staticmethod)の使い方

pythonのスタティックメソッドは、クラスメソッドとよく似ているが、第1引数にselfやclsを指定しない。
インスタンスメソッドやクラスメソッドのように、インスタンスやクラスが渡さず、インスタンス変数、クラス変数にアクセスして変更はしない。

以下のように宣言する


class class_a:
  @static_method # static_methodの定義
  def method_a(arg):
    pass

スタティックメソッドはインスタンスメソッドやクラスメソッドの処理の中身を分けたい場合、クラスやインスタンスの状態を変更・参照する必要がない場合に用いる。

  • スタティックメソッド(@staticmethod)の例
import math

class Circle:
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return self.circle_area(self.radius) # スタティックメソッドを呼び出す。

    @staticmethod
    def circle_area(r): # スタティックメソッド
        return r ** 2 * math.pi

c1 = Circle(5)
print(c1.area())

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 2
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 3
    Python未経験だが、フリーランスの案件に採用さ…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 インスタンスメソッドの使い方
2 クラスメソッド(@classmethod)の使い方
3 スタティックメソッド(@staticmethod)の使い方
4 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Python講座
【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。<strong>Pythonの基礎から生成AI活用</strong>...
詳細 ▶

Footer

利用規約