Pythonにおけるproperty属性の概論と使用方法

1734 ワード

propertyプロパティ
  • コンセプト:
  • は1つの方法を定義するが、装飾器propertyを使用してselfパラメータ
  • を1つしか持たない.
  • は、このような属性で属性の値
  • を動的に取得することができる.
  • 定義方式(クラシッククラス)
  •  class Fun():
        @property
        def size(self):
            return 100
    
    fun = Fun()
    print(fun.size)
    100
  • 定義方式(新式クラス)
  • 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
    #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