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实现将内容分行输出
Nov 05 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Python sorted函数详解(高级篇)
Sep 18 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
Pytorch提取模型特征向量保存至csv的例子
Jan 03 Python
python判断正负数方式
Jun 03 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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上传中文文件名乱码问题处理方案
2015/02/03 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
js 幻灯片的实现
2011/12/06 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
Python栈类实例分析
2015/06/15 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
教师自我鉴定
2013/12/13 职场文书
拔河比赛口号
2014/06/10 职场文书
意向书范本
2014/07/29 职场文书
离婚协议书怎么写
2015/01/26 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
校园开放日新闻稿
2015/07/17 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
使用CSS设置滚动条样式
2022/01/18 HTML / CSS