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 strip lstrip rstrip使用方法
Sep 06 Python
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
PyGame贪吃蛇的实现代码示例
Nov 21 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
Python常用库大全及简要说明
Jan 17 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
基于python实现图片转字符画代码实例
Sep 04 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
深入理解pytorch库的dockerfile
Jun 10 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安装为Apache DSO
2006/10/09 PHP
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
为PHP初学者的8点有效建议
2010/11/20 PHP
浅析PHP绘图技术
2013/07/03 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
中科前程Java笔试题
2016/11/20 面试题
UNIX文件系统分类
2014/11/11 面试题
爱护公共设施标语
2014/06/24 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书