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 相关文章推荐
pymongo为mongodb数据库添加索引的方法
May 11 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
python爬虫之百度API调用方法
Jun 11 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
Python给你的头像加上圣诞帽
Jan 04 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
Python超详细分步解析随机漫步
Mar 17 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
德生9700DX电路分析
2021/03/02 无线电
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php实现上传图片文件代码
2015/07/19 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
JavaScript 参考教程
2006/12/29 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
深入理解Python中range和xrange的区别
2017/11/26 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
String和StringBuffer的区别
2015/08/13 面试题
房地产还款计划书
2014/01/10 职场文书
大学毕业感言50字
2014/02/07 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书