Python 类,property属性(简化属性的操作),@property,property()用法示例


Posted in Python onOctober 12, 2019

本文实例讲述了Python 类,property属性(简化属性的操作),@property,property()用法。分享给大家供大家参考,具体如下:

property属性的创建方式有两种:1.@property装饰器方式   2.类属性方式 ( 类属性=property() )

property属性可以简化实例对象对属性的操作(获取、设置),可以对属性做类型校验和预处理等。

装饰器方式:

demo.py(@property,获取属性值,旧式类与新式类都有的方式):

class Goods:
  @property
  # 只能传递self参数。 必须返回一个值
  def size(self):
    return 100 # 必须返回一个值
obj = Goods()
result = obj.size # 调用属性(没有用小括号,用属性的方式调用函数)
print(result)
# property属性一般对属性值做一些预处理或格式化处理等,可以简化属性的获取。

运行结果:

100

demo.py(@xxx.setter,@xxx.deleter,设置属性值、删除属性,新式类支持的方式):

class Goods(object):
  def __init__(self):
    # 原价
    self.original_price = 100
    # 折扣
    self.discount = 0.8
  @property
  # 方式一 获取属性值 (新式类和旧式类都支持该方式)
  def price(self):
    # 实际价格 = 原价 * 折扣
    new_price = self.original_price * self.discount
    return new_price
  @price.setter
  # 方式二 设置属性值 (旧式类不支持,需要传两个参数)
  def price(self, value):
    self.original_price = value
  @price.deleter
  # 方式三 删除属性 (旧式类不支持)
  def price(self):
    del self.original_price
obj = Goods()
obj.price     # 获取商品价格 (自动调用@property修饰的函数)
obj.price = 200  # 修改商品原价 (自动调用@price.setter修饰的函数,并将200传给函数)
del obj.price   # 删除商品原价 (自动调用@price.deleter修饰的函数)

类属性方式:

demo.py(类属性创建property属性,旧式类与新式类都支持):

class Goods(object):
  def __init__(self):
    # 原价
    self.original_price = 100
    # 折扣
    self.discount = 0.8
  def get_price(self):
    # 实际价格 = 原价 * 折扣
    new_price = self.original_price * self.discount
    return new_price
  def set_price(self, value):
    self.original_price = value
  def del_price(self):
    del self.original_price
  # 类属性。 property(方法名1,方法名2,方法名3,"属性描述信息")
  PRICE = property(get_price, set_price, del_price, "属性描述信息...")
obj = Goods()
obj.PRICE     # 获取商品价格 自动调用propert()函数第一个参数指定的方法。
obj.PRICE = 200  # 设置商品原价 自动调用propert()函数第二个参数指定的方法。
desc = Goods.PRICE.__doc__ # 自动获取第四个参数中设置的值:属性描述信息...
print(desc)
del obj.PRICE   # 删除商品原价 自动调用propert()函数第三个参数指定的方法。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
Python读取图片属性信息的实现方法
Sep 11 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
Python实现求数列和的方法示例
Jan 12 Python
python适合人工智能的理由和优势
Jun 28 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
TensorBoard 计算图的查看方式
Feb 15 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 Python
Python中基础数据类型 set集合知识点总结
Aug 02 Python
详解Python内置模块Collections
Mar 22 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 #Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 #Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 #Python
Python Collatz序列实现过程解析
Oct 12 #Python
python logging日志模块原理及操作解析
Oct 12 #Python
Python爬虫之urllib基础用法教程
Oct 12 #Python
python 生成器和迭代器的原理解析
Oct 12 #Python
You might like
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
php define的第二个参数使用方法
2013/11/04 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
浅谈javascript的调试
2015/01/28 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
Python中的元组介绍
2019/01/28 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python之拟合的实现
2019/07/19 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python如何对链表操作
2020/10/10 Python
python中count函数知识点浅析
2020/12/17 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
个人近期表现材料
2014/02/11 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
怎么写自荐书范文
2014/02/12 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
网络技术专业求职信
2014/05/02 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
道歉情书大全
2015/05/12 职场文书
运动会致辞稿
2015/07/29 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android