Python @property

Python·@property属性 一、property属性 property属性可以用来给属性添加约束,比如温度属性,我们不允许低于-273度;成绩属性,我们不允许0分以下等等。而且使用property属性,将来修改约束条件的时候也很方便,可以在代码的调用方式不变的情况下改变结果。 python中使用property属性有两种方法。使用@property装饰器和使用property()函数。这里我们着重学习@property属性 二、@property属性 @property装饰器就是负责把一个方法变成属性调用的。如下实例就可以通过 阅读详情
@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的,我们视具体情况吧 
请注意以下代码场景: 

代码片段1:

class Parrot(object):
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

if __name__ == "__main__":
    # instance
    p = Parrot()
    # similarly invoke "getter" via @property
    print p.voltage
    # update, similarly invoke "setter"
    p.voltage = 12

代码片段2:

class Parrot:
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

if __name__ == "__main__":
    # instance
    p = Parrot()
    # similarly invoke "getter" via @property
    print p.voltage
    # update, similarly invoke "setter"
    p.voltage = 12

代码1、2的区别在于 
class Parrot(object): 

在python2.6下,分别运行测试 
片段1:将会提示一个预期的错误信息 AttributeError: can't set attribute 
片段2:正确运行 

参考python2.6文档,@property将提供一个ready-only property,以上代码没有提供对应的@voltage.setter,按理说片段2代码将提示运行错误,在python2.6文档中,我们可以找到以下信息: 

BIF: 
property([fget[, fset[, fdel[, doc]]]]) 
Return a property attribute for new-style classes (classes that derive from object). 
原来在python2.6下,内置类型 object 并不是默认的基类,如果在定义类时,没有明确说明的话(代码片段2),我们定义的Parrot(代码片段2)将不会继承object 

而object类正好提供了我们需要的@property功能,在文档中我们可以查到如下信息: 

new-style class 
Any class which inherits from object. This includes all built-in types like list and dict. Only new-style classes can use Python's newer, versatile features like __slots__, descriptors, properties, and __getattribute__(). 

同时我们也可以通过以下方法来验证

class A:
	pass

>>type(A) 
<type 'classobj'> 

class A(object):
	pass

>>type(A) 
<type 'type'>

从返回的<type 'classobj'>,<type 'type'>可以看出<type 'type'>是我们需要的object类型(python 3.0 将object类作为默认基类,所以都将返回<type 'type'>) 

为了考虑代码的python 版本过渡期的兼容性问题,我觉得应该定义class文件的时候,都应该显式定义object,做为一个好习惯 

最后的代码将如下:

class Parrot(object):
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

    @voltage.setter
    def voltage(self, new_value):
        self._voltage = new_value

if __name__ == "__main__":
    # instance
    p = Parrot()
    # similarly invoke "getter" via @property
    print p.voltage
    # update, similarly invoke "setter"
    p.voltage = 12

另外,@property是在2.6、3.0新增的,2.5没有该功能。

转自:http://joy2everyone.iteye.com/blog/910950


一文搞定 GitHub SSH Key:生成、配置、好处全攻略 本文详细介绍了如何配置GitHub SSH Key,实现免密安全认证。主要内容包括:SSH协议的四大优势(免密登录、安全性高、稳定省心、支持自动化);Git身份配置步骤;检查本地SSH Key;生成RSA密钥对;添加密钥到SSH代理;复制公钥到GitHub;测试连接。配置完成后,开发者可通过SSH地址克隆仓库,实现push/pull全程免密操作。该方案显著提升Git使用效率,同时保障安全性,是开发者必备技能。 阅读详情

相关推荐

python毕设 基于Web的中药材信息查询系统程序+论文

***(程序+源码+数据库+调试部署+开发环境)论文文档1,文末可获取,系统界面在最后面。****

m0_74825541的博客 1257

Python面向对象加强1.关于经典类、新式类和property详解

关于经典类、新式类和property详解

weixin_44275448的博客 633

Cursor设置界面汉化保姆级教程:手把手教你修改JS文件实现中文界面(附避坑指南)

本文提供Cursor编辑器设置界面汉化的详细教程,从定位JS文件到安全修改实现中文界面,包含必备工具清单、文件路径指引和常见问题解决方案。通过手把手教学帮助用户轻松完成汉化,提升使用体验,特别适合不熟悉英文界面的开发者。

weixin_29007809的博客 1412

python常用的内置函数object,property

typical的使用方式就是manage某个属性的,相当是给类内的某个变量配置了相关的fget, fset, fdel函数,仅仅只有这个变量可以使用。上面的codes还可以使用装饰器@property来简化,首先对函数name装饰,然后用装饰以后的name装饰set和del函数的。c=C(),c.x = k会调用c.setx函数,del c.x会调用c.delx函数,k = c.x会调用getx函数。property是用来给某个变量配置相关的函数的,主要是获取函数、配置函数和删除函数的。

邹九的个人博客 224

9 HAL库驱动框架简述(STM32HAL库)

HAL库外设的使用步骤总结如下:1、定义并填充xxx外设句柄结构体。2、如果遵循HAL库规范,通过HAL_xxx_MspInit()函数,实现外设底层资源的初始化,包括但不限于GPIO、时钟、DMA、中断等资源的初始化。3、调用HAL库的对应外设初始化函数,形如:HAL_xxx_Init()。4、初始化完成,开始使用外设。5、使用方法具体查看对应外设的HAL库驱动包中的说明:补充:HAL库使用主线外设初始化外设使用。

qq_25218501的博客 1977

数学之美 | 图论和网络爬虫

文章目录概述图论网络爬虫分析BFSDFSBFS + DFS参考资料 概述 这篇文章主要给大家介绍一下计算机算法中非常重要的一部分——图论,以及它在生活中的应用——网络爬虫。   图论 离散数学是当代数学的一个重要的分支,也是计算机科学的数学基础。它又包括四个分支,而图论便是其中一支,另外三个分别是:数理逻辑、集合论、近代数学。 图论中的图由一些节点和边构成,比如下面这张图 。 在图论中一个很基础...

小小酥梨的博客 3229

python:python对象属性及属性函数property()

http://blog.youkuaiyun.com/pipisorry/article/details/50708616python对象属性Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。属性的__dict__系统对象的属性可能来自于其类定义,叫做类属性(class attribute)。类属性可能来自类定义自身,也可能根据类定

皮皮blog 7282

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表)

本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。

weixin_30879169的博客 525

python @property

@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的,我们视具体情况吧  请注意以下代码场景:  代码片段1:  Python2.6代码   clas

elevenqiao的专栏 8574

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

授时中心被攻击?Windows 11 电脑时间不准?手把手教您如何更换国内稳定高速的时间服务器(时间服务器整理)

近期授时中心被攻击,时间同步重要性凸显。Windows 11 默认服务器在国内常遇网络问题。本文教你轻松修改时间服务器,选择更稳定、快速的国内优质服务器,彻底解决电脑时间不准的烦恼,让你的系统时间永远精准如一!🚀

XiaoqiangClub的博客 1082

Python描述符【二】:Property

前言 property后续称为特性,是python中内置的标准数据型描述符,是描述符用于管理实例属性的典型代表,本文按照property的使用、语法糖的等价含义及property的实现顺序进行记录。 实例 使用property管理私有属性x的实例: class Test(object): __x = 'abc' # __x表示x为私有属性 @property def x(self): """ i am property of x """ retur

weixin_44815943的博客 403

12、控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示

控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示1、用到的控件2、添加控件2.1、添加【文本录入】控件2.1、添加【文本显示】控件2.1、添加【QR 二维码】控件3、保存工程及生成文件4、下载文件 1、用到的控件   需要用的显示控件为【文本显示】控件和【QR二维码】控件,以及触控控件【文本录入】控件。 2、添加控件 2.1、添加【文本录入】控件   【文本录入】控件也叫【ASCI 文本录入】,是用来录入ASCI 字符,打开 DGUS 软件,点击【触控控件】—【文本录入】,用鼠标框选一个区域,即可在右

嵌入式羊圈 624

Python @property 装饰器讲解

property() 函数 与 @property 装饰器讲解

小皇鱼-的-博客 4700

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python @property装饰器详解

之前的文章中,我们探究了@后接某个自定义函数的用法,实际上,更常见、完备、简单的应用在于对@和python内置的函数进行结合;这可以避免造轮子的行为。 我们知道, Python 内置了3种函数装饰器,分别是 @staticmethod、@classmethod 和 @property,其中 staticmethod()、classmethod() 和 property() 都是 Python 的内置函数。而本文的目的,是以@property为例,对内置函数的装饰器应用进行探究,以明了其应用范围。 pro

yingxuanzhang的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python中@property的作用

Python中的@property是一个装饰器,主要的作用是改变了类中方法的调用方式,具体的就是类实例化后的对象调用类中的方法一般后面需要加上“()”以表明调用的是方法,如果不加括号,说明调用的是类中的属性,但是经过@property修饰器修饰之后的方法,类实例化后的对象调用该方法时后面变不再需要加上小括号了,看起来就像是调用了类中的一个属性一样。因为这个装饰器所修饰方法的作用就是调用类中的属性,而类实例化对象便可以通过该方法间接调用到类中的私有属性,从而做到了更加规范化。...

weixin_44305115的博客 4844

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python中的@property

在python中,@property是一个装饰器,用于将类中的方法转换为属性。通过 @property,你可以将方法的调用方式变为属性访问方式,同时保留方法的内部逻辑,可以使代码更加简洁,易读,并且可以在访问属性时执行一些额外的逻辑。:可以定义一些动态计算的属性,这些属性的值不是直接存储的,而是在访问时计算。可以在不改变接口的情况下,将普通属性改为方法,或者将方法改为普通属性。,你可以将方法的实现细节隐藏起来,只暴露属性的接口。:将方法转换为属性,使方法的调用方式与普通属性相同。:定义属性的设置器方法。

m0_59247951的博客 1234

python 中 @property 的作用

1、=======不可修改变量值方法:============= class Rectangle(object): def __init__(self): self.true_height=1024 self.true_width=769 @property def width(self): # 变量名不与方法名重复,改为true_width,通过此方法可以防止值被随意修改 return self.true_width @property d...

m0_58606548的博客 424

python @property作用,Python 中@property的用法详解

在绑定属性时,如果我们直接把属性赋值给对象,比如:p = Person()p.name= 'Mary'我们先看个详细的例子(注意双下划线name和age定义为私有变量):class Person(object):def __init__(self, name, age):self.__name = nameself.__age = agedef get_age_fun(self):return s...

weixin_29111953的博客 176

python知识:装饰器@property有啥用途?

python的@property是python的一种装饰器,是用来修饰方法的。python @property 装饰器使一个方法可以像属性一样被使用。除此之外,还有几个使用场景,本文将叙述这些使用技巧。

gongdiwudu的专栏 9975

python @property详解,Python @property 详解

类方法转为只读属性重新实现属性的setter, getter, deleter方法类方法转为只读属性class Jhy(object):"""docstring for Jhy"""def __init__(self, a, b):self.a = aself.b = bdef all(self):return ('a: {}, b: {}'.format(self.a, self.b))@pr...

weixin_42535720的博客 230

Python 特性 @property

什么是特性property @property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 @property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。 将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种不能随便赋值的特...

weixin_30600503的博客 88

python(@property)

一、@property #@property 负责装饰一个对象函数,让某生成对应的setter和getter函数,调用的时候,直接可以使用对象名.函数名这种类似于属性的调用方法来执行函数小例子:(1) class People(object): def __init__(self): self.__age = 20 # 1.普通获取设置属性值得方法

博客小白 3310

python中@property的作用,python中@property的作用和getter setter的解释

@property作用:python的@property是python的一种装饰器,是用来修饰方法的。我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。1.修饰方法,让方法可以像属性一样访问。class DataSet(object):@propertydef method_with_p...

weixin_39518840的博客 279

python - @property属性

总结: 1). Python内置的@property装饰器就是负责把一个方法变成属性调用的; 2). @property本身又创建了另一个装饰器@state.setter,负责把一个 setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作. 3). @property广泛应用在类的定义中,可以让调用者写出简短的代码, 同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。 ...

淋巴cell学习py之路 833
上一篇: Python 实例方法、@staticmethod和@classmethod
下一篇: jsonp详解
celte
博客等级 码龄15年 40粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值