天天看點

Python中property屬性的使用

property屬性
  • 負責把一個方法當做屬性進行使用,這樣做可以簡化代碼。

1 裝飾器方式定義property屬性

  • @property

    表示把方法當做屬性使用, 表示當擷取屬性時會執行下面修飾的方法;
  • @方法名.setter

    表示把方法當做屬性使用,表示當設定屬性時會執行下面修飾的方法;
  • 裝飾器方式的property屬性修飾的方法名一定要一樣。
class Student(object):
    def __init__(self):
        self.__age = 0

    @property                # 把age方法當做屬性使用, 當擷取屬性時會執行下面的方法
    def age(self):
        return self.__age

    @age.setter              # 把age方法當做屬性使用, 當設定屬性時會執行下面的方法
    def age(self, new_age):
        if new_age >= 100:
            print("活到老學到老?Are you really?")
        else:
            self.__age = new_age

p = Student()
print(p.age)
p.age = 25
print(p.age)
p.age = 1000
===運作結果:==============================================================
0
25
活到老學到老?Are you really?
           

2 類屬性方式定義property屬性

類屬性 = property(擷取值方法名, 設定值方法名)

class Student(object):

    def __init__(self):
        self.__age = 0

    def get_age(self):                              # 當擷取age屬性的時候會執行該方法
        return self.__age

    def set_age(self, new_age):                     # 當設定age屬性的時候會執行該方法
        if new_age >= 100:
            print("活到老學到老?Are you really?")
        else:
            self.__age = new_age

    age = property(get_age, set_age)                # 類屬性方式的property屬性

p = Student()
print(p.age)
p.age = 25
print(p.age)
p.age = 1000

===運作結果:==============================================================
0
25
活到老學到老?Are you really?