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之不要红头文件(2)
Sep 28 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
python数据结构之列表和元组的详解
Sep 23 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
python 获取等间隔的数组实例
Jul 04 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
django 解决扩展自带User表遇到的问题
May 14 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 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
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php开发文档 会员收费1期
2012/08/14 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP经典面试题集锦
2015/03/19 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JavaScript前补零操作实例
2015/03/11 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
js实现点击烟花特效
2020/10/14 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python常用函数与用法示例
2019/07/02 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python爬虫增加访问量的方法
2019/08/22 Python
pymysql模块使用简介与示例
2020/11/17 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
法人任命书范本
2014/06/04 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
档案接收函格式
2015/01/30 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS