【python】property 的詳細使用方法

property 有兩種使用方式
  • 裝飾器:在方法上應用裝飾器
  • 類屬性: 在類中定義值爲 property 對象的類屬性
裝飾器方式

官方幫助文檔

property(fget=None, fset=None, fdel=None, doc=None) -> property attribute
Decorators make defining new properties or modifying existing ones easy:

        class C(object):
            @property
            def x(self):
                "I am the 'x' property."
                return self._x
            @x.setter
            def x(self, value):
                self._x = value
            @x.deleter
            def x(self):
                del self._x

注意:三個處理 _x 屬性的方法名要相同(參數不同)

通過一個例子來更好的理解裝飾器方式

class Money:
    def __init__(self):
        self._money = 0

    @property
    def money(self):
        return self._money

    @money.setter
    def money(self, value):
        self._money = value

    @money.deleter
    def money(self):
        print('我沒錢了')
        del self._money


dollar = Money()
m = dollar.money  # 獲取,dollar.money 在調用時沒有()
print(m)
dollar.money = 10000000  # 修改
m = dollar.money
print(m)
del dollar.money  # 刪除

打印結果爲

0
10000000
我沒錢了

該類的屬性有三種訪問方式,並分別對應三個被 @property、@方法名.setter、@方法名.deleter 修飾的方法,這三個方法對同一個屬性:獲取,修改,刪除

類屬性方式

官方幫助文檔

class C(object):
            def getx(self): return self._x
            def setx(self, value): self._x = value
            def delx(self): del self._x
            x = property(getx, setx, delx, "I'm the 'x' property.")

通過一個例子來更好的理解類屬性方式

class Money:
    def __init__(self):
        self._money = 0

    def get_money(self):
        return self._money

    def setter_money(self, value):
        self._money = value

    def deleter_money(self):
        print('我沒錢了')
        del self._money

    money = property(get_money, setter_money, deleter_money)


dollar = Money()
m = dollar.money
print(m)
dollar.money = 100000000
m = dollar.money
print(m)
del dollar.money

打印結果

0
10000000
我沒錢了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章