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中用format函数格式化字符串的用法
Apr 08 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Python离线安装PIL 模块的方法
Jan 08 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
解决jupyter notebook 出现In[*]的问题
Apr 13 Python
如何更换python默认编辑器的背景色
Aug 10 Python
python 实现批量图片识别并翻译
Nov 02 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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
sphinx增量索引的一个问题
2011/06/14 PHP
smarty简单分页的实现方法
2014/10/27 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
PHP加密解密函数详解
2015/10/28 PHP
Jquery遍历节点的方法小集
2014/01/22 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
用Python实现随机森林算法的示例
2017/08/24 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
Python实现数字的格式化输出
2020/08/01 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
新员工欢迎词
2014/01/12 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL