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实现合并两个数组的方法
May 16 Python
Python字典及字典基本操作方法详解
Jan 30 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
python dumps和loads区别详解
Feb 04 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
python 批量压缩图片的脚本
Jun 02 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 str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php常用文件操作函数汇总
2014/11/22 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP微信API接口类
2016/08/22 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
javascript arguments使用示例
2014/12/16 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python中统计函数运行耗时的方法
2015/05/05 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
计算机专业职业生涯规划范文
2014/01/19 职场文书
高二物理教学反思
2014/02/08 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
大学生村官承诺书
2014/03/28 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
实习单位鉴定意见
2015/06/04 职场文书
论文评审意见
2015/06/05 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS