【2025革新型・高速USB3.0対応】 CD DVDドライブ 外付け 静音 DVDプレーヤー 外付けDVDドライブ USB3.0&Type-C両接続 読取/書込可 CDプレーヤー バスパワー駆動 外付けCDドライブ 軽量 薄型 光学ドライブ 外付け CDドライブ Mac PC パソコン Windows11対応 Windows10/8/7XP 外付け CD DVD ドライブ
¥1,999 (2025年5月4日 13:15 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740 (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