安心の日本企業 iphone15/16シリーズ対応 USB 2.0 (オス) to Type-C (メス) USB 変換アダプタ 変換 急速充電 480Mbps iPhone 16/15/14/13/12/11対応 AppleWatch/iPad/アップル MagSafe/スマホ/パソコン/充電器 uc0112 (USB-A(オス) to USB-C(メス)480Mbps2個)
¥630 (2025年5月4日 13:15 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
- インスタンスに紐づかないメソッドのこと
-
@classmethodデコレータを使って定義する
- デコレータについてはこちら
- クラス内で便利関数的に利用する
- 引数にclsを取ってクラスの情報にアクセスできる
- thisとは違う、thisはインスタンスの情報にアクセスする
- 呼び出し方は.
- なおクラスの情報を使わない場合はクラスメソッドとせずにstatixメソッドとすれば良い
- クラスメソッドに限った話ではないが、定義名に接頭辞に_(アンダースコア)をつけて他で利用されないことを明示する(あくまで明示で、アンダースコアをつけるだけではprivateのような実際のアクセス制限はされないので注意)
- クラスメソッド内でインスタンスを生成して返すことも可能
- 俗にいうファクトリーメソッド
class User:
def __init__(self, name):
self.name = name
@classmethod
def create_guest(cls):
return cls("ゲスト")
# 使用例
guest = User.create_guest()
print(guest.name) # => ゲスト
cls(“ゲスト”) によって、User クラスのインスタンスを生成して返している例です。
確かにcreate_userというクラスメソッド
によってインスタンスが生成されていますね。
- 要点でも記載した内容ですが、
クラス内部の情報を使う→クラスメソッド
、使わない場合はstaticメソッド
とすべきです。
以下の様な場合はクラスの情報を使っていないのでstaticメソッドでいいですよね
class MathUtils:
@staticmethod
def add(x, y):
return x + y
# 使用例
print(MathUtils.add(3, 5)) # => 8
# クラスの状態や属性を一切参照しないので、@staticmethod が適切
- 半単に以下のような場合はクラスの情報を使っているのでクラスメソッドとして定義すべきです。
class Config:
default_timeout = 30
@classmethod
def get_default_timeout(cls):
return cls.default_timeout
# 使用例
print(Config.get_default_timeout()) # => 30
# cls.default_timeout のようにクラス属性にアクセスしているため、@classmethod が適切
Views: 3