LoginSignup
3
2

More than 1 year has passed since last update.

【Python】propertyを使ったgetter/setterの書き方

Posted at

propertyを使ったgetter/setterの書き方についてメモしておく。
propertyは、クラス外部からはインスタンス変数のように参照することのできる関数のこと。

基本的な書き方

propertyを使ったgetter/setterの基本的な書き方は、以下のようになる。

# getterの書き方
@property
def 変数名(self):
    return self.変数名

# setterの書き方
@変数名.setter
def 変数名(self, value):
    self.変数名 = value

サンプル

簡単なgetter/setterを使ったサンプルプログラム書いてみた。
getterだけを記述して、値を変更されないようにしたり、下記のようにsetterに値チェックなどを書くことができる。
また、Pythonでは__(アンダースコア2つ)は言語仕様として、privateなメンバを意味する。

class Student:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    @property
    def name(self):
        return self.__name

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, age):
        if age < 0:
            raise ValueError("年齢が不正です")
        self.__age = age

student = Student("Ryota",18)
student.age = 20
print(student.name)    # Ryota
print(student.age)     # 20

# ageに不正な値を入れた場合
# student.age = -1 
# ValueError: 年齢が不正です

3
2
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
3
2