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正则表达式 re模块使用说明
May 19 Python
linux查找当前python解释器的位置方法
Feb 20 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python读取指定字节长度的文本方法
Aug 27 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
python可视化实现KNN算法
Oct 16 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
考博自荐信
2013/10/25 职场文书
优秀学生获奖感言
2014/02/15 职场文书
敬老模范事迹
2014/05/21 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL