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提取字典key列表的方法
Jul 11 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
python算法题 链表反转详解
Jul 02 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 Python
解决numpy和torch数据类型转化的问题
May 23 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下将XML转换为数组
2010/01/01 PHP
Cakephp 执行主要流程
2010/03/24 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
JS中Location使用详解
2015/05/12 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
DJI全球:DJI Global
2021/03/15 全球购物
Eclipse面试题
2014/03/22 面试题
经典c++面试题六
2012/01/18 面试题
什么是方法的重载
2013/06/24 面试题
大学新生欢迎词
2014/01/10 职场文书
村干部培训方案
2014/05/02 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
微观世界观后感
2015/06/10 职场文书
职工培训工作总结
2015/08/10 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
创业计划书之酒吧
2019/12/02 职场文书