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 zip文件 压缩
Dec 24 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Python Web编程之WSGI协议简介
Jul 18 Python
python实现决策树分类(2)
Aug 30 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python的一些加密方法及python 加密模块
Jul 11 Python
python 操作excel表格的方法
Dec 05 Python
Python创建文件夹与文件的快捷方法
Dec 08 Python
Python面向对象编程之类的概念
Nov 01 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 图像处理类1
2009/06/15 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
js查找父节点的简单方法
2008/06/28 Javascript
jQuery each()小议
2010/03/18 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
python中使用序列的方法
2015/08/03 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python实现图片中文字分割效果
2019/07/22 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
免职通知
2015/04/23 职场文书
入党转正介绍人意见
2015/06/03 职场文书
护士岗位竞聘书
2015/09/15 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang