LoginSignup
0
0

More than 1 year has passed since last update.

getter setter deleter

Posted at
class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

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

    @name.setter
    def name(self, value):
        self._name = value

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

    @age.setter
    def age(self, value):
        if not isinstance(value, int):
            raise TypeError("age must be an integer")
        if value < 0 or value > 120:
            raise ValueError("age must be between 0 and 120")
        self._age = value

    @age.deleter
    def age(self):
        del self._age
person = Person("Alice", 25)

#nameのgetter
print(person.name)  # Alice 

#nameのsetter
person.name = "Bob"
print(person.name)  # Bob

#ageのgetter
print(person.age)   # 25

#ageのsetter if条件があります。
person.age = 30
print(person.age)   # 30

#ageのdeleter
del person.age
print(person.age)   # AttributeError: 'Person' object has no attribute '_age'
  1. getterメソッド:プロパティの値を取得するためのメソッドです。通常、プロパティの値を取得する際には、プロパティ自体を呼び出すだけで取得できますが、場合によっては明示的にgetterメソッドを定義することがあります。

  2. setterメソッド:プロパティの値を設定するためのメソッドです。@property.setterデコレータを使用する場合は、このsetterメソッドが自動的に作成されます。しかし、場合によっては明示的にsetterメソッドを定義する必要があります。

  3. deleterメソッド:プロパティを削除するためのメソッドです。@property.deleterデコレータを使用することで、このdeleterメソッドが自動的に作成されます。

デコレーターに関して
例としてperson.nemeでプロパティにアクセスする場合@propertyデコレータを使ってnameプロパティを取得する際にはgetterメソッドの名前はプロパティの名前と同じにする必要がある。

0
0
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
0
0