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 09 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
python数据结构之链表详解
Sep 12 Python
dataframe设置两个条件取值的实例
Apr 12 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
Python使用configparser库读取配置文件
Feb 22 Python
在keras中实现查看其训练loss值
Jun 16 Python
Keras实现支持masking的Flatten层代码
Jun 16 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目录与文件操作
2011/12/30 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
JavaScript实现联动菜单特效
2020/01/07 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
在centos7中分布式部署pyspider
2017/05/03 Python
Django中的Signal代码详解
2018/02/05 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
python中列表的含义及用法
2020/05/26 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
一份婚庆公司创业计划书
2014/01/11 职场文书
小学运动会表扬稿
2014/01/19 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
保护环境建议书
2014/03/12 职场文书
教师产假请假条
2014/04/10 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
护士个人年终总结
2015/02/13 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python