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元组拆包和具名元组解析实例详解
Mar 26 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
python异常处理try except过程解析
Feb 03 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
Python文件时间操作步骤代码详解
Apr 13 Python
在python中使用nohup命令说明
Apr 16 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
pytorch实现查看当前学习率
Jun 24 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
PHP游戏编程25个脚本代码
2011/02/08 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
javascript self对象使用详解
2016/10/18 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python中的super()方法使用简介
2015/08/14 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
python 实现二维列表转置
2019/12/02 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
以太网Ethernet IEEE802.3
2013/08/05 面试题
环境科学专业个人求职信
2013/09/26 职场文书
服务质量承诺书
2014/03/27 职场文书
体操比赛口号
2014/06/10 职场文书
秋冬农业生产标语
2014/10/09 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
导游词幽默开场白
2019/06/26 职场文书
Django基础CBV装饰器和中间件
2022/03/22 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript