0
1

Pythonにおけるstaticmethodとclassmethodについて

Posted at

Pythonにおけるstaticmethodとclassmethod

staticmethodとは

@staticmethodは、静的メソッドを定義する。
静的メソッドとは、オブジェクトを作成せずに呼び出せるメソッドで、通常の関数と同様に使う事ができる。
対象のクラスに関わるメソッドであるため、クラス内に作っておいた方が可読性が上がる、という場合に使うとよい。

class MyClass:
  def __init__(self):
    pass

  @staticmethod
  def static_method(arg):
    return arg

print(MyClass.static_method(1))  # 1

classmethodとは

@classmethodは、クラスメソッドを定義する
クラスメソッドとは、staticmethod同様にオブジェクトを作成せずに呼び出せるメソッドで、第一引数にクラス自体が設定される。
オブジェクトの生成に関わる処理を行う関数として使うと良い。

from datetime import datetime

class BetterDate:
  def __init__(self, year, month, day):
      self.year, self.month, self.day = year, month, day

  @classmethod
    def from_str(cls, datestr):
        year, month, day = map(int, datestr.split("-"))
        return cls(year, month, day)

today = datetime.today()
bd = BetterDate.from_str(today)
print(bd.year)
print(bd.month)
print(bd.day)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1