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统计列表中的重复项出现的次数的方法
Aug 18 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Python算法之图的遍历
Nov 16 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
如何利用python正则表达式匹配版本信息
Dec 09 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/04/09 欧美动漫
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
详解php的socket通信
2015/08/11 PHP
php session的应用详细介绍
2017/03/22 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
关于Python中异常(Exception)的汇总
2017/01/18 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
python实现二维数组的对角线遍历
2019/03/02 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
Python生成词云的实现代码
2020/01/14 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
介绍一下linux的文件系统
2012/03/20 面试题
环境工程求职简历的自我评价范文
2013/10/24 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
学校联谊活动方案
2014/02/15 职场文书
国防教育标语
2014/10/08 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
护士个人总结范文
2015/02/13 职场文书
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers