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删除文件示例分享
Jan 28 Python
python实现的登录和操作开心网脚本分享
Jul 09 Python
Python代码的打包与发布详解
Jul 30 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
python实现从字典中删除元素的方法
May 04 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Python 文件处理注意事项总结
Apr 10 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 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的一些小问题
2010/07/03 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
JavaScript splice()方法详解
2020/09/22 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
深入理解js promise chain
2016/05/05 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
详解django2中关于时间处理策略
2019/03/06 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
电子商务应届生自我鉴定
2014/01/13 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
干部考察材料范文
2014/12/24 职场文书