月曜日, 5月 5, 2025
ホームニューステックニュース【Python】クラスメソッド要点まとめ #初心者 - Qiita

【Python】クラスメソッド要点まとめ #初心者 – Qiita



【Python】クラスメソッド要点まとめ #初心者 - Qiita

  • インスタンスに紐づかないメソッドのこと
  • @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 が適切



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link

Views: 3

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

Most Popular

Recent Comments