Python中property屬性的概論和使用方法

property屬性

  • 概念:
    • 定義一個方法可是使用裝飾器property,只能夠有一個self形參
    • 能夠用這樣的屬性動態的獲取屬性的值
  • 定義方式(經典類)
class Fun():
    @property
    def size(self):
        return 100

fun = Fun()
print(fun.size)

100python

  • 定義方式(新式類)
class Fun():
    def __init__(self):
        self.num = 0
        
    @property
    def price(self):
        print("get @property")
        return self.num
        
    @price.setter
    def price(self, value):
        self.num = value
        print("set @price.setter")
    
    @price.deleter
    def price(self):
        print("del @price.deleter")
        
obj = Fun()
print(obj.price)    # 能夠獲取價格,調用property裝飾器
obj.price = 100     # 修改價格,調用price.setter裝飾器
del obj.price       # 刪除價格,調用price.deleter裝飾器
get @property
0
set @price.setter
del @price.deleter`
  • 使用property方法來建立property屬性

能夠使用proerty來替代原有的封裝的set和get方法code

#coding=utf-8
class Foo(object):
    def get_bar(self):
        print("getter...")
        return "laowang"

    def set_bar(self, value): 
        """必須兩個參數"""
        print("setter...")
        return 'set value' + value

    def del_bar(self):
        print("deleter...")
        return "laowang"

    BAR = property(get_bar, set_bar, del_bar, "description...")

obj = Foo()

obj.BAR  # 自動調用第一個參數中定義的方法:get_bar
obj.BAR = "alex"  # 自動調用第二個參數中定義的方法:set_bar方法,並將「alex」看成參數傳入
desc = Foo.BAR.__doc__  # 自動獲取第四個參數中設置的值:description...
print(desc)
del obj.BAR  # 自動調用第三個參數中定義的方法:del_bar方法
相關文章
相關標籤/搜索