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中处理unchecked未捕获异常实例
Jan 17 Python
linux下python抓屏实现方法
May 22 Python
利用Python爬取可用的代理IP
Aug 18 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
Python虚拟环境项目实例
Nov 20 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
python FTP编程基础入门
Feb 27 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与javascript对多项选择的处理
2006/10/09 PHP
php分页示例代码
2007/03/19 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
在Python中使用异步Socket编程性能测试
2014/06/25 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python购物车程序简单代码
2018/04/18 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
python deque模块简单使用代码实例
2020/03/12 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
python缩进长度是否统一
2020/08/02 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
物控部经理职务说明书
2014/02/25 职场文书
财务内勤岗位职责
2014/04/17 职场文书
新生入学欢迎词
2015/01/26 职场文书
保外就医申请书范文
2015/08/06 职场文书
销售会议开幕词
2016/03/04 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
如何使用python包中的sched事件调度器
2022/04/30 Python