Python | クラスにおける各種メソッドの使い方

公開日:2021/6/2

Pythonのクラスには以下3種類のメソッドがある.これら3種類のメソッドについて説明をする.

・インスタンスメソッド
・クラスメソッド
・スタティックメソッド

◆実施環境

Python 3.8.8

■3種類のメソッドの説明

インスタンスメソッドとは,クラスにおける最も基本的なメソッドである.引数に"self"を取り,インスタンスを用いて呼び出すメソッドである.

クラスメソッドとは,デコレータである"@classmethod"を用い,引数に"cls"を取り,クラス変数を呼び出すメソッドである.

スタティックメソッドとは,デコレータである"@staticmethod"を用いる.クラス変数もインスタンス変数も呼び出すことはできない.両変数を使用しない場合,利用するが,利用頻度は低い.

# 1の処理
class Chocolate:
  greeting = 'Hello'

  def __init__(self,maker,brand,year): # コンストラクタ
    self.maker = maker
    self.brand = brand
    self.year = year

  def introduction(self): # インスタンスメソッド
    print(f'{self.maker}は{self.year}年に{self.brand}を発売した')

  @classmethod
  def class_name(cls,msg1): # クラスメソッド
    print('Hi classmethod')
    print(cls.greeting) # クラス変数
    print(msg1)

  @staticmethod
  def print_other(msg2): # スタティックメソッド
    print('Hi staticmethod')
    print(msg2)

Chocolate.class_name('ABC') # クラスメソッド呼び出し

myChoco1 = Chocolate('Meiji','Fran',1999) # インスタンス生成
myChoco1.introduction()

myChoco1.print_other('Morning, static1') # スタティックメソッド呼び出し方1
Chocolate.print_other('Morning, static2') # スタティックメソッド呼び出し方2

■実行結果

# 1の結果
Hi classmethod # クラスメソッドの出力
Hello
ABC

Meijiは1999年にFranを発売した # インスタンスメソッドの出力

Hi staticmethod # スタティックメソッドの出力
Morning, static1
Hi staticmethod
Morning, static2

以上