python @property 解释
文章目录
- @property 前言
- @property 介绍
- property方法实现
- @property 实现
@property 前言
>>> class test(object):
... def __init__(self):
... self.__num = 10
... def getNum(self):
... return self.__num
... def setNum(self, value):
... self.__num = value
...
>>> t = test()
>>> t.getNum()
10
>>> t.setNum(20)
>>> t.getNum()
20
你会发现,例子中我们属性只有1个,增加了1对方法,也就是2个方法。我们已经知道,当把属性设置为私有属性时,通过添加对应的方法获取其值,通过添加对应的方法设置值,还可以通过方法做数据的有效性校验、过滤等操作。
那么,如果属性非常多时,我们上面的做法又会显得非常麻烦,这有没有好的解决方案呢?答案是有的。python中给我们提供了一些关键词,专门帮我们解决上面的问题,我们今天就详细学习这些知识。
@property 介绍
@property是Python内置的一种装饰器。(什么是装饰器,暂时可以理解为给函数动态加上功能的一种语法)。@property的内部实现是比较复杂的。现在我们先学会如何使用,等以后有了一定的分析源码的能力,再回过头分析其内部实现。
从今以后,见到@property 第一反应就是:@property专门负责把一个方法变成同名属性的。
是一种进行类或实例属性操作(有效性校验、过滤等操作)的有效,简便的途径。
解释:上面我们用修饰了方法,此时会把方法直接变成同名属性。当我们获取属性的值时,实际上就是调用的此方法。
此时,本身又自动创建了另一个装饰器,负责把一个方法变成属性赋值,即:num的setter方法。于是,修饰的其实是,当我们给赋值时,实际上就是调用的此方法。
property方法实现
>>> class test(object):
... def __init__(self):
... self.__num = 10
... def getNum(self):
... return self.__num
... def setNum(self, value):
... self.__num = value
... num = property(getNum, setNum)
...
>>> t = test()
>>> print(t.num) # 10
10
>>> t.num = 20
>>> print(t.num) # 20
20
关于property方法,我们来看下官方文档:
由文档可得:
- property方法包含四个参数,分别为fget,fset,fdel,doc,分别对应getter方法,setter方法,deleter方法和方法说明。
- property()方法返回一个property属性,如果c是C的实例,那么c.x会调用getter方法,c.x = value会调用setter方法,而del c.x会调用deleter方法。
@property 实现
>>> class test(object):
... def __init__(self):
... self.__num = 10
... @property
... def num(self):
... return self.__num
... @num.setter
... def num(self, value):
... self.__num = value
...
>>> t = test()
>>> t.num
10
>>> t.num = 20
>>> t.num
20
关于@property,官方文档如下:
根据文档可得:
- 我们可以把property()方法当成一个装饰器来使用,使用@property对方法进行装饰。
- 装饰器@property把方法x()转换成了与方法名同名的getter方法,"I’m the ‘x’ property."是property的doc参数。
- 调用方法和property()方法一样
补充:
- @property定义只读属性
- @setter定义可读可写属性
- @deleter定义可读可写可删除属性
python @property 解释相关推荐
- python语言属于-python属于解释语言吗
Python是一门解释型语言? Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. 如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写 ...
- python怎么解释语言_python属于解释语言吗
Python是一门解释型语言? Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. 如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写 ...
- python怎么解释语言_python是解释型语言吗
Python 是解释型的语言吗?它会被编译吗? 这个问题没有想象中那么好回答.和很多人认识世界一样,习惯以一个简单的模型去评判一些事物.而事实上,里面包含了很多很多的细节. 通常的说法,编译代表着将一 ...
- python采用解释方式执行_Python解释执行原理
谈到了Python语句的两种执行方式,实际上,这两种运行方式在本质 上是相同的,它们都是由解释器来解释执行我们提供的Python语句. 这里所说的解释执行是相对于编译执行而言的.我们知道,使用诸如 C ...
- Python?Python!(python是解释型还是编译型)
文章目录 解释型语言?编译型语言? 1. 为什么要有解释型语言? 2. `.pyc`文件 3 对于python是解释型还是编译型的判断 3.1 字节码和机器语言的区别 3.2 解释器和虚拟机 4. 为 ...
- python property作用_python中@property的作用和getter setter的解释
@property作用: python的@property是python的一种装饰器,是用来修饰方法的. 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同 ...
- python采用解释方式执行_Python初学(一)
<本系列性文章是根据一篇python教程来写的,如有侵权请联系管理员删除文章> 在学习Python之前要先知道什么是程序设计语言,也就是程序设计语言的概述是什么? 程序设计语言的概述: 程 ...
- python property内建函数的介绍
为什么80%的码农都做不了架构师?>>> 函数property的基本功能就是把类中的方法当作属性来访问,下面以一个有意思的例子介绍一下: 假如有一只猫,它忘了它喜欢吃什么,下面 ...
- python中文解释-python注释中文
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 4.python代码注释最后更新于:2019-10-05 14:25:4 ...
- python中文解释-python是解释型语言么
python是解释型语言么? python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和p ...
最新文章
- 机器学习评价指标ROC AUC
- Tfs 2010使用小技巧
- 亲爱的,你是最棒的!
- iptables中文man文档
- 12.源码阅读(app启动流程-android api 26)
- 获取进程或线程的ID以及句柄信息
- hbase shell远程连接_HBase安装详解
- 【最新】2021年自然语言处理 (NLP) 算法学习路线!
- LINUX下载编译sqlite-jdbc(支持mips64el/loongarch64的jar包下载)
- WinUSB Component for .Net WinForm
- TMOD、TCON、SCON、PCON、SBUF寄存器说明
- android呼叫转移代码,动态Android呼叫转移
- OpenGL中phong光照模型详解
- 多个containers 共用一个pvc_庆阳PVC排水管生产线销售,真不错_崔氏机械
- Mac PS CC2018详细软件按照教程
- 某宝上关于PMP低价续证,可信吗?
- 物联网基于wifi定位模型
- 域名贵吗?域名值不值钱?
- matlab相机标定程序,MATLAB单相机校准程序中文.pdf
- 基于长短期记忆网络的电力负荷预测(Python代码实现)