python中@property和pro

发布时间:2019-05-19 23:27:56编辑:auto阅读(2242)

    1、基本的@property使用,可以把函数当做属性用

    class Person(object):
        @property
        def get_name(self):
            print('我叫xxx')
     
     
    def main():
        person = Person()
        person.get_name
     
     
    if __name__ == '__main__':
        main()

    2、@property的set,deleter,get

    class Goods(object):
        @property
        def price(self):
            print('@property')
     
        @price.setter
        def price(self,value):
            print('@price.setter:'+str(value))
     
        @price.deleter
        def price(self):
            print('@price.deleter')
     
    obj = Goods()
    obj.price = 50
    obj.price
    del obj.price

    3、@property demo

    class Goods(object):
        def __init__(self):
            #原价
            self.original_price = 100
            #折扣
            self.discount = 0.8
     
        @property
        def price(self):
            #实际价格=原价*折扣
            new_price = self.original_price*self.discount
            return new_price
        @price.setter
        def price(self,value):
            self.original_price = value
        @price.deleter
        def price(self):
            del self.original_price
    obj = Goods()
    obj.price
    obj.price = 200
    del obj.price

    4、property函数使用

    class Foo(object):
        def get_name(self):
            print('get_name')
            return 'laowang'
     
        def set_name(self, value):
            '''必须两个参数'''
            print('set_name')
            return 'set value' + value
     
        def del_name(self):
            print('del_name')
            return 'laowang'
     
        NAME = property(get_name, set_name, del_name, 'description.')
     
     
    obj = Foo()
    obj.NAME    #调用get方法
    obj.NAME = 'alex'   #调用set方法
    desc = Foo.NAME.__doc__     #调用第四个描述
    print(desc)
    del obj.NAME    #调用第三个删除方法

    5、property函数操作私有属性的get和set方法

    class Person(object):
        def __init__(self, age):
            self.__age = age
     
        def set_age(self, value):
            self.__age = value
     
        def get_age(self):
            return self.__age
     
        AGE = property(get_age, set_age)
     
     
    person = Person(15)
    person.AGE = 20
    print(str(person.AGE))

     



关键字