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 05 Python
Python实现统计英文单词个数及字符串分割代码
May 28 Python
浅谈五大Python Web框架
Mar 20 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
Python爬虫文件下载图文教程
Dec 23 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
Python学习之时间包使用教程详解
Mar 21 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php 团购折扣计算公式
2011/11/24 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
python实时监控cpu小工具
2018/06/21 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
Python 在函数上添加包装器
2020/07/28 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
《小小竹排画中游》教学反思
2014/02/26 职场文书
投标担保书范文
2014/04/02 职场文书
法定代表人授权委托书
2014/04/04 职场文书
学校宣传标语
2014/06/18 职场文书
大学生求职信例文
2014/06/29 职场文书
应届大学生求职信
2014/07/20 职场文书
关于保护环境的建议书
2014/08/26 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL