python3中property使用方法详解


Posted in Python onApril 23, 2019

本文实例为大家分享了python3中的property使用方法,供大家参考,具体内容如下

property属性

定义

一个可以使实例方法用起来像实例属性一样的特殊关键字,可以对应于某个方法,通过使用property属性,能够简化调用者在获取数据的流程(使代码更加简明)。

property属性的定义和调用要注意以下几点:

调用时,无需括号,加上就错了;并且仅有一个self参数

实现property属性的两种方式

装饰器

新式类中的属性有三种访问方式,并分别对应了三个被

  • @property对应读取
  • @方法名.setter修改
  • @方法名.deleter删除属性
class Goods:
 def __init__(self):
 self.age = 18
 
  @property
  def price(self): # 读取
    return self.age
    
  # 方法名.setter
  @price.setter # 设置,仅可接收除self外的一个参数
  def price(self, value):
    self.age = value
    
  # 方法名.deleter
  @price.deleter # 删除
  def price(self):
    del self.age

# ############### 调用 ###############
obj = Goods()  # 实例化对象 
obj.age  # 直接获取 age属性值
obj.age= 123   #  修改age的值
del obj.age  #  删除age属性的值

类属性

当使用类属性的方式创建property属性时,property()方法有四个参数

  • 第一个参数是方法名,调用 对象.属性 时自动触发执行方法
  • 第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法
  • 第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法
  • 第四个参数是字符串,调用 对象.属性.doc ,此参数是该属性的描述信息
class Goods(object):
  def __init__(self):  
    self.price = 100  # 原价
    self.discount = 0.8 # 折扣

  def get_price(self):
    # 实际价格 = 原价 * 折扣
    new_price = self.price * self.discount
    return new_price

  def set_price(self, value):
    self.price = value

  def del_price(self):
    del self.price
   # 获取    设置     删除    描述文档
  PRICE = property(get_price, set_price, del_price, '价格属性描述...')
 # 使用此方式设置
 
obj = Goods()
obj.PRICE     # 获取商品价格
obj.PRICE = 200  # 修改商品原价
del obj.PRICE   # 删除商品原价

使用property取代getter和setter方法

使用@property装饰器改进私有属性的getset方法

class Money(object):
  def __init__(self):
    self.__money = 0

  # 使用装饰器对money进行装饰,那么会自动添加一个叫money的属性,当调用获取money的值时,调用装饰的方法
  @property
  def money(self):
    return self.__money

  # 使用装饰器对money进行装饰,当对money设置值时,调用装饰的方法
  @money.setter
  def money(self, value):
    if isinstance(value, int):
      self.__money = value
    else:
      print("error:不是整型数字")

a = Money()
a.money = 100
print(a.money)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
python生成验证码图片代码分享
Jan 28 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 Python
Python根据指定文件生成XML的方法
Jun 29 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
django中ImageField的使用详解
Dec 21 Python
如何使用Python提取Chrome浏览器保存的密码
Jun 09 Python
python缺失值填充方法示例代码
Dec 24 Python
详解爬虫被封的问题
Apr 23 #Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
Apr 23 #Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 #Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 #Python
使用Python控制摄像头拍照并发邮件
Apr 23 #Python
详解Python静态网页爬取获取高清壁纸
Apr 23 #Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 #Python
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
Yii2如何批量添加数据
2016/05/17 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
基于python实现学生管理系统
2018/10/17 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Python多线程的退出控制实现
2020/08/10 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
计算机专业毕业生求职信
2014/04/30 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
运动会新闻报道稿
2015/07/22 职场文书
初中生物教学随笔
2015/08/15 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
创业计划书之面包店
2019/09/12 职场文书