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来开发Markdown脚本扩展的实例分享
Mar 04 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Python selenium 三种等待方式解读
Sep 15 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python网络编程 Python套接字编程
Sep 13 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
解决python中无法自动补全代码的问题
Dec 04 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 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+DBM的同学录程序(5)
2006/10/09 PHP
解析php中const与define的应用区别
2013/06/18 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
php 可变函数使用小结
2018/06/12 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
python使用str & repr转换字符串
2016/10/13 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
python实现画一颗树和一片森林
2018/06/25 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
高三自我鉴定范文
2013/10/19 职场文书
医院护士的求职信
2014/01/03 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
应届毕业生求职信
2014/05/26 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
车位出租协议书范本
2016/03/19 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang