環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Python の @property はクラスのインスタンスメソッドを変数のようにする

クラスのインスタンスメソッドに @property をつけると変数のようにアクセスできます。

class User:
    def __init__(self, name, age):
        self.id = 0
        self._name = name
        self._age = age

    @property
    def hello(self):
        return self._name


a = User(name='Alice', age=27)

print(a.hello)  # Alice

a は関数 hello変数のようにアクセスし、a.hello() でなく a.hello となっています。PyCharm で a を入力すると

のように idhello がアクセス可能になっています。_name_age はアンダーバーから始まっているため候補に出てこない。

Python クラス