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用ConfigObj读写配置文件的实现代码
Mar 04 Python
python解析html开发库pyquery使用方法
Feb 07 Python
python导入时小括号大作用
Jan 10 Python
python实现Adapter模式实例代码
Feb 09 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
python清除函数占用的内存方法
Jun 25 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
详解python中的模块及包导入
Aug 30 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Django用户身份验证完成示例代码
Apr 03 Python
Python HTMLTestRunner库安装过程解析
May 25 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随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
PHP创建XML接口示例
2019/07/04 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
Python3基础之条件与循环控制实例解析
2014/08/13 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
个人找工作自荐信格式
2013/09/21 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
单位提档介绍信
2014/01/17 职场文书
师德个人剖析材料
2014/02/02 职场文书
2014年网管工作总结
2014/12/11 职场文书
趣味运动会简讯
2015/07/20 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
javascript对象3个属性特征
2021/11/17 Javascript