python

超轻量级php框架startmvc

python中@property和property函数常见使用方法示例

更新时间:2020-08-04 03:36:01 作者:startmvc
本文实例讲述了python中@property和property函数常见使用方法。分享给大家供大家参考,具体如

本文实例讲述了python中@property和property函数常见使用方法。分享给大家供大家参考,具体如下:

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


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

运行结果:

我叫xxx

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

运行结果:

@price.setter:50 @property @price.deleter

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 #调用第三个删除方法

运行结果:

get_name set_name description. del_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))

运行结果:

20

python @property property函数