python入门(@property,@*.setter)

Python的getter和setter方法 当我们对area属性赋值时,实际上是在调用这个setter方法,并根据我们指定的面积重新计算宽度和高度。接着定义一个perimeter的setter方法,对perimeter属性赋值时,实际上是调用这个setter方法,并修改radius属性值。紧接着,我们定义了一个name的setter方法。当我们对name属性赋值时,实际上是在调用这个setter方法,并将属性值首字母大写。示例中, @property 装饰器将name方法转换为只读属性,可以使它像访问类的属性一样访问name方法。 阅读详情
@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。
1、只有@property表示 只读 。
2、同时有@property和@*.setter表示 可读可写 。

3、同时有@property和@*.setter和@*.deleter表示可读可写可删除。


代码:

[python]  view plain  copy
  1.  1 #coding=utf-8  
  2.  2 class student(object):  #需继承父类object,否则property等无法生效   
  3.  3   
  4.  4     def __init__(self,v_id = '000'):  
  5.  5         self.__id = v_id  
  6.  6   
  7.  7     @property  
  8.  8     def score(self):  
  9.  9         return self._score  
  10. 10   
  11. 11     @score.setter  
  12. 12     def score(self,v_score):  
  13. 13         if not isinstance(v_score,int):  
  14. 14             raise ValueError('score must be an integer!')  
  15. 15         if v_score < 0 or v_score > 100:  
  16. 16             #raise ValueError('score must between 0 and 100')       
  17. 17             print('数值不在有效范围内')  
  18. 18         else:  
  19. 19             print(v_score,'operation success')  
  20. 20         self._score = v_score  
  21. 21   
  22. 22     @property  
  23. 23     def get_id(self):  
  24. 24         return self.__id  
  25. 25   
  26. 26 s = student('001')  
  27. 27 s.score=60  
  28. 28 #print s.__id   #报错,没有该属性  
  29. 29 print s.get_id  
  30. 30 print s.score  
  31. 31   
  32. 32 s = student()  
  33. 33 s.score=-100  
  34. 34 print s.get_id  
  35. 35 print s.score  

执行:

R以及Rstudio超详细安装教程(包括安装过程中出现的问题) R安装及Rstudio安装,以及安装中出现的问题 阅读详情

相关推荐

Vivado加上VsCode让你的生活更美好

VsCode与Vivado的灵活使用 引言 ​ 现在大二了,在接触硬件描述语言。Vivado自带的编辑器实在很难用,为了能够“极客”一些,当然是去Google了一下有哪些方法可以取而代之。 ​ 网络上的答案大同小异,基本上都是用的Sublime Text.(我的学长们也几乎都是) 平时码代码的过程中,我习惯与使用VsCode,尤其是在微软收购GitHub之后,Code 简直就是神器了。于是乎…一个...

qq_39498701的博客 10万+

【python】@property, @xx.setter, __set__

后面不管是__init__还是其他方法,再对age进行赋值时,都会因为修改了age_filter而触发age_filter里的__set__。注意,这个类变量名age要和传入age_filter的key_name一致,否则__set__里的修改不生效。__set__里的逻辑是,如果value大于self.threshold,那么用value对adult类实例中的self.key_name赋值,否则,用self.default_value对adult类实例中的self.key_name赋值。

己亥孟陬 395

用户存续期价值评估CLV(二) BG/NBD Model python模拟

BG/NBD Model …继续 想象每一个客户有两个硬币,一个“Buy Coin"控制客户购买的概率;一个"Die Coin"控制客户流失、不再购买的概率。 前面假设了客户的交易次数服从泊松过程: 在一年中的每个月,客户都以抛硬币的方式来决定是否购买。我们所观察到的购买次数取决与泊松分布的参数 ????。 %matplotlib inline import numpy as np impor...

weixin_43171270的博客 3419

python装饰器@property

@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。1、只有@property表示只读。2、同时有@property和@*.setter表示可读可写。3、同时有@property和@*.setter和@*.deleter表示可读可写可删除。 代码: [pyt...

weixin_34337265的博客 284

Proteus下载安装快速入门:30分钟掌握全过程

手把手教你完成proteus下载安装,从环境配置到首次运行一气呵成,适合电子设计新手快速掌握仿真工具的核心操作步骤。

weixin_31974443的博客 891

EDEM在农业机械设计中的实战应用:以谷物收割机优化为例

本文以谷物收割机优化为例,详细阐述了EDEM离散元仿真软件在农业机械设计中的实战应用。通过构建精准的“数字谷物”模型与农机部件动态界面,利用GPU加速完成大规模颗粒系统仿真,有效诊断并解决了籽粒夹带损失与清选负荷不均等田间难题,实现了从仿真分析到田间验证的设计优化闭环。

weixin_29256771的博客 106

Python(装饰器)的getter和setter的方法使用详解

@property 可以将一个方法的调用方式变成“属性调用”。 @property 主要用于帮助我们处理属性的读操作、写操作。 Python没有真正的私有变量,但是我们可以使用以下约定将变量定义为私有变量:使用一个下划线_将变量名称前缀。虽然这不会完全阻止从外部访问该变量,但是这是一种常用的约定,告诉其他程序员不应该直接访问该变量。

qq_41619571的博客 9409

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 325

Python中@property和@*.setter装饰器的详细用法

有这么个场景: class result: def init(self): self.data = [11,33,44,55,66] exam_result = result() exam_result.data = 1 Python exam_result.data 可以被随意修改,可我只希望它是一个只读属性,应该怎么做呢? @property @property装饰器的作用是,将一个函数装饰成为类的一个属性,当某个属性需要动态的计算时,用@property来装饰函数最好不过了; 了解@函数修饰符的人应该

qq_42719459的博客 2751

Matlab波动光光学系统

波动光学是一种研究光波传播过程的理论,按照其处理的信息类型不同,可以分为相干和非相干波动光学,相干波动光学可以用作特定光学系统的分析和设计,其主要依赖物理光学和电磁波的基本原理,以及光学干涉和衍射的经验方程式,其中光波传播过程是以复数形式表示的,包括振幅和相位两个方面。近年来光学技术得到了广泛的应用和发展,波动光光学系统是其中一种重要的光学系统,它主要是利用波动光学原理,通过计算机模拟实现各种光学系统的设计、分析和优化,可应用于大气光传输、光束整形、分析系统的衍射和干涉特性,包括利用。

weixin_50547796的博客 259

Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析)

在最近的后端开发中,多多少少会发现有很多if-else语句,如果条件过多则会造成整体代码看起来非常臃肿。本篇博客汇总了我对工厂模式和策略模式的理解,以及我是如何把它们巧妙运用在实际项目当中的一些技巧进行了分享,如有问题,欢迎评论区讨论!

黄团团的个人博客 2611

Python@setter用法介绍

Python@setter是Python编程语言中的一个关键属性,它简化了Python开发者的编程过程,提高了编程效率。

huangxulei的专栏 2046

SPAD IMX479规格_VOP

对于VOP的定义,很多人可能是不理解这一路的供电,实际上这一路供电是非常重要的,这是给器件SPAD供电,决定SPAD是否work,在大部分的paper以及大部分公司,基本都是叫VOP,名称是SPAD breakdown voltage power supply,严格意义上叫Operating Voltage,工作电压。当然有些公司也有一些其他叫法就不提了。其实大家可以明显的看出,典型值-20.5没有发生变化,市面上绝大多数VOP的典型值也都是在-20V这边。

致力于lidar应用开发 701

python @property @*.setter

在python 代码中有时候可以看到如下片段: @property def tick(self): return self._tick @tick.setter def tick(self, tick): self._tick = tick self.save_netnode() 片段来自于下面的类定义中 clas...

zhangji 911

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python property 函数 @property,@*.setter @*.deleter

Python property 函数 @property,@*.setter属性方法 属性方法 属性方法其实就是把类中的方法改造成属性的一种写法,该写法需要在方法上加上@property,例如: from datetime import datetime from dateutil.relativedelta import relativedelta class Person: de...

CSPhD-winston的博客 393

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

(@property,@*.setter,@*.deleter)

(@property,@*.setter,@*.deleter)

kuangfeng的博客 254

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python中@property与@*.setter的使用

class Dog(object): def __init__(self, name, age): self.name = name # 私有属性 self.__age = age # 使用@property进行修饰,方法名就是属性名,即age, # 被property修饰的方法只有一个参数(self) # 它必须要有返回值 @property def age(self): return sel

weixin_43478488的博客 1255

python装饰器 property_Python中@property和@*.setter装饰器的详细用法

有这么个场景:class result:def __init__(self):self.data = [11,33,44,55,66]exam_result = result()exam_result.data = 1exam_result.data 可以被随意修改,可我只希望它是一个只读属性,应该怎么做呢?@property@property装饰器的作用是,将一个函数装饰成为类的一个属性,当某个...

weixin_39836803的博客 176

python @property setter/deleter

这是因为调用s.name时,首先转换为方法调用,在执行执行self.name时,又视为访问self的属性,于是又转换为方法调用,造成无限递归,最终导致栈溢出报错RecursionError。错误示例2:要修改的变量名和方法名不一致,在执行修改操作的时候,并没有调用 @get_value.setter。1.定义的方法名称必须要是变量名(如属性名是name,那函数名称就为name,不能为其他的),但是没有办法检查检查参数,导致可以任意设置对象属性.2.属性的方法名不要和实例变量重名。

liulanba的博客 2513

python 中@property 和 @<property_name>.setter

装饰器用于将类的方法转换为属性的 getter 和 setter 方法。这样做的好处是,你可以像访问普通属性一样访问这些方法,同时还能在访问或修改属性时执行一些额外的逻辑。以下是一个简单的示例,展示了如何使用。在 Python 中,

m0_70005009的博客 344

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

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

gongdiwudu的专栏 9975

@property和@property.setter的使用

【代码】@property和@property.setter的使用。

lizhenqi123456的博客 694

Python入门基础篇 No.75 —— @property装饰器_getter和setter方法

Python入门基础篇 No.75 —— @property装饰器_getter和setter方法 文章目录Python入门基础篇 No.75 —— @property装饰器_getter和setter方法前言一、@property 装饰器总结 前生篇:私有属性和私有方法(实现封装) 前言 一、@property 装饰器 @property 可以将一个方法的调用方式变成“属性调用”。下面是一个简单的示例,让大家体会一下这种转变: 代码演示: # 简单测试@property class Empl

成长的Offer 916

python之@property注解

property是 Python 内置的装饰器,用于将类的方法转换为属性式访问。它允许开发者将方法以属性的形式调用(如obj.attr而非obj.attr()),同时封装属性的读取(getter)、赋值(setter)、删除(deleter)逻辑,实现受控的属性访问(如数据验证、计算属性、隐藏内部变量)。场景推荐用法计算属性(如面积、总价)仅定义@property(只读)需要数据校验的属性定义@property@属性名.setter需要清理资源的属性额外定义@属性名.deleter。

cosseen的专栏 1457

python装饰器setter实现原理_Python中@property和@setter装饰器的详细用法

有这么一个场景:我们发现,exam_result.data可以被随意修改,如果我们希望他是一个只读属性,应该怎么做呢?@property登场了解@用法的人应该知道property实际上是一个函数;还对@用法不太了解的朋友可以参考文章末尾的链接。其原型如下property(fget=None,fset=None,fdel=None,doc=None)使用方法:重新命名data为__data以达到名称...

weixin_39636850的博客 1123
上一篇: mongodb 添加用户报错TypeError:db.addUser is not a function (mongodb3.4.1)
下一篇: 遍历文件目录并上传服务器
lycommand
博客等级 码龄14年 31粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值