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


Posted in Python onOctober 21, 2019

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python中的多重装饰器
Apr 11 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
运行django项目指定IP和端口的方法
May 14 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
python后端接收前端回传的文件方法
Jan 02 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
python如何读取bin文件并下发串口
Jul 05 Python
利用Python复制文件的9种方法总结
Sep 02 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
keras K.function获取某层的输出操作
Jun 29 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 #Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 #Python
python打印直角三角形与等腰三角形实例代码
Oct 20 #Python
python配置文件写入过程详解
Oct 19 #Python
python实现广度优先搜索过程解析
Oct 19 #Python
python字符串格式化方式解析
Oct 19 #Python
基于python3监控服务器状态进行邮件报警
Oct 19 #Python
You might like
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
js实现电灯开关效果
2021/01/19 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
python获取多线程及子线程的返回值
2017/11/15 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python基于当前时间批量创建文件
2020/05/07 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
毕业自我评价范文
2013/11/17 职场文书
初中生个人学习的自我评价
2013/12/04 职场文书
运动会广播稿300字
2014/01/10 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
合理化建议书
2015/02/04 职场文书
慰问信范文
2015/02/14 职场文书
小学校长个人总结
2015/03/03 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
MySQL创建管理子分区
2022/04/13 MySQL
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
解决 redis 无法远程连接
2022/05/15 Redis