• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Python / Pythonのsetterとgetterの使い方, @propetyを用いたsetterの定義方法についてまとめました

Pythonのsetterとgetterの使い方, @propetyを用いたsetterの定義方法についてまとめました

1 setter,getterの設定方法1(Propertyを利用)
2 setter,getter,(deleter)の設定方法2(@property,@var.setter,@var.deleter)
3 関連記事

setter,getterの設定方法1(Propertyを利用)

カプセル化とは、オブジェクト指向の中心的な概念で、特定のプロパティやメソッドを外部から隠すことを意味する。
つまり、プロパティやメソッドに直接アクセスできずに、特定の処理を通じてしかアクセスができないようにすることを言う。

Pythonでは、カプセル化をするのに、setterとgetterを利用する。

プロパティはプライベートで宣言して、アクセスするには、getterとsetterを利用するようにする。

pythonのsetter、getterには、2つの定義方法がある。

1つ目は、get_変数名, set_変数名というメソッドを作成し、Propertyを用いて、setterとgetterを登録する方法である。
以下のようにする
 

def get_変数名():
def set_変数名():
変数名 = Property(get_変数名, set_変数名)

 

  • Example

Example

  • setter, getterの利用方法1
class Human:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def get_name(self): # __nameのgetterの定義
        print("getterを呼び出しました")
        return self.__name # private変数の__nameを返す

    def get_age(self): # __ageのgetterの定義
        return self.__age

    def set_name(self, value): #__nameのsetterの定義
        print("setterを呼び出しました")
        self.__name = value # private変数の__nameを設定する

    def set_age(self, value): #__ageのsetterの定義
        self.__age = value

    name = property(get_name, set_name) # property関数を利用して,nameに対しsetter, getterを設定する
    age = property(get_age, set_age)

man = Human("Taro", 23)
print(man.name) # man.nameとすると、get_nameが呼び出され、"getterを呼び出しました"と表示される
man.name = "Jiro" # man.name = とすると、set_nameが呼び出され、"setterを呼び出しました"と表示される
print(man.name) # Jiroと表示
print(man.age) # 23と表示

 

setter,getter,(deleter)の設定方法2(@property,@var.setter,@var.deleter)

pythonにgetterとsetterを設定して、カプセル化する方法にはもう1つある。

また、deleterと呼ばれる、インスタンスから変数を削除する場合に呼び出される関数も定義できる。

getterの定義
@property
def 変数名(self):
setterの定義
@変数名.setter
def 変数名(self, value):
deleterの定義
@変数名.deleter
def 変数名(self):
  • Example

Example

  • setter, getterの利用方法2
class Human:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    @property # @propertyとすると、nameプロパティのgetterとして定義できる
    def name(self):
        print("getterを呼び出しました")
        return self.__name

    @property# @propertyとすると、ageプロパティのgetterとして定義できる
    def age(self):
        return self.__age

    @name.setter # nameプロパティのsetterとして定義する
    def name(self, value):
        print("setterを呼び出しました")
        self.__name = value # privateの変数、__nameを設定する

    @age.setter # ageプロパティのsetterとして定義する
    def age(self, value):
        self.__age = value

    @name.deleter # nameプロパティのdeleterとして定義される
    def name(self):
        print("deleterを呼び出しました")
        del self.__name

    @age.deleter
    def age(self):
        del self.__age

man = Human("Taro", 20)
print(man.name) # man.nameとするとnameのsetterが呼び出され、__nameが表示される

man.name = "PP" # man.name = ""とするとnameのgetterが呼び出され、__nameの値が変更される

del man.name # del man.nameとするとnameのdeleterが呼び出され、__nameが表示削除される

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 setter,getterの設定方法1(Propertyを利用)
2 setter,getter,(deleter)の設定方法2(@property,@var.setter,@var.deleter)
3 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Python講座
【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。<strong>Pythonの基礎から生成AI活用</strong>...
詳細 ▶

Footer

利用規約