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中使用base64模块处理字符编码的教程
Apr 28 Python
Python入门教程之if语句的用法
May 14 Python
Python实现屏幕截图的两种方式
Feb 05 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
python3利用Socket实现通信的方法示例
May 06 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 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
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
php简单获取复选框值的方法
2016/05/11 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
python学习数据结构实例代码
2015/05/11 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Django-imagekit的使用详解
2020/07/06 Python
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
测控技术与仪器个人求职信范文
2013/12/30 职场文书
雷锋的观后感
2015/06/10 职场文书
美容院员工规章制度
2015/08/05 职场文书
初级职称评定工作总结
2015/08/13 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
SQL Server删除表中的重复数据
2022/05/25 SQL Server