网络编程
位置:首页>> 网络编程>> Python编程>> python中@property和property函数常见使用方法示例

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

作者:以梦为马越骑越傻  发布时间:2021-11-13 03:32:20 

标签: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程序设计有所帮助。

来源:https://blog.csdn.net/weixin_42670402/article/details/83216845

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com