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实现简单截取中文字符串的方法
Jun 15 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
TensorFlow如何实现反向传播
Feb 06 Python
代码分析Python地图坐标转换
Feb 08 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
Python3 实现串口两进程同时读写
Jun 12 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
python实现猜拳游戏
Mar 04 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
django数据模型中null和blank的区别说明
Sep 02 Python
详解Python+OpenCV进行基础的图像操作
Feb 15 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
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
用console.table()调试javascript
2014/09/04 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
React组件生命周期详解
2017/07/03 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
wxPython的安装图文教程(Windows)
2017/12/28 Python
python获取array中指定元素的示例
2019/11/26 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
python numpy数组中的复制知识解析
2020/02/03 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
html5唤起app的方法
2017/11/30 HTML / CSS
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
初中科学教学反思
2014/01/21 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
会议邀请书范文
2014/02/02 职场文书
班训口号大全
2014/06/18 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
离婚协议书范文2015
2015/01/26 职场文书
学校证明范文
2015/06/24 职场文书
2019财务转正述职报告
2019/06/27 职场文书