位置: IT常识 - 正文

Python学习:property装饰器(pythonproperty)

编辑:rootadmin
1.property 装饰器:装饰器是在不修改被装饰对象源代码以及调用方式的前提下为被装饰对象添加新功能的可调用对象 property是一个装饰器,是用来绑定给对象的方法伪造成一个数据属性 装饰器property,可以将类中的函数“伪装成”对象的数据属性,对象在访问该特殊属性时会触发功能的执行,然后 ... 1.property

推荐整理分享Python学习:property装饰器(pythonproperty),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python prob,python@property,python学习路线,python学习路线,prophet python,prophet python,python prog,python学习手册 第5版 pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

装饰器:装饰器是在不修改被装饰对象源代码以及调用方式的前提下为被装饰对象添加新功能的可调用对象

property是一个装饰器,是用来绑定给对象的方法伪造成一个数据属性

Python学习:property装饰器(pythonproperty)

装饰器property,可以将类中的函数“伪装成”对象的数据属性,对象在访问该特殊属性时会触发功能的执行,然后将返回值作为本次访问的结果。

使用property有效地保证了属性访问的一致性。另外property还提供设置和删除属性的功能

应用场景:有的功能属性听起来更像数据属性,python则提供了一种装饰器,可以将功能属性伪装成数据属性

2.案例:"""成人的BMI数值:过轻:低于18.5正常:18.5-23.9过重:24-27肥胖:28-32非常肥胖, 高于32  体质指数(BMI)=体重(kg)÷身高^2(m)  EX:70kg÷(1.75×1.75)=22.86"""  

案例一:

class People: def __init__(self, name, weight, height): self.name = name self.weight = weight self.height = height# 定义函数的原因1:# 1、从bmi的公式上看,bmi应该是触发功能计算得到的# 2、bmi是随着身高、体重的变化而动态变化的,不是一个固定的值# 说白了,每次都是需要临时计算得到的# 但是bmi听起来更像是一个数据属性,而非功能 @property def bmi(self):return self.weight / (self.height ** 2) obj1 = People('egon', 70, 1.83) print(obj1.bmi()) obj1.height=1.86 print(obj1.bmi()) print(obj1.bmi)

案例二:

'''学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!''' class People: def __init__(self, name): self.__name = name def get_name(self): return self.__name def set_name(self, val): if type(val) is not str: print('必须传入str类型') return self.__name = val def del_name(self): print('不让删除') # del self.__name name=property(get_name,set_name,del_name) obj1=People('egon') # print(obj1.get_name()) # obj1.set_name('EGON') # print(obj1.get_name()) # obj1.del_name() # 人正常的思维逻辑 print(obj1.name) # # obj1.name=18 # del obj1.name

案例三:

class People: def __init__(self, name): self.__name = name @property def name(self): # obj1.name return self.__name @name.setter def name(self, val): # obj1.name='EGON' if type(val) is not str: print('必须传入str类型') return self.__name = val @name.deleter def name(self): # del obj1.name print('不让删除') # del self.__nameobj1=People('egon')# 人正常的思维逻辑print(obj1.name) ## obj1.name=18# del obj1.name
本文链接地址:https://www.jiuchutong.com/zhishi/313038.html 转载请保留说明!

上一篇:全面理解JSX(全面理解健康教案)

下一篇:Protobuf生成文件报错(protobuf 文档)

  • 快乐一生歌曲(快乐一叮)(快乐一生歌曲)

  • 抖音如何关闭朋友在线通知(抖音如何关闭朋友推荐功能)

  • 荣耀30青春版指纹解锁在哪个位置(荣耀30青春版指纹怎么设置)

  • 华为荣耀v20多少重量(华为荣耀v20多少钱8+128)

  • 正在更新icloud设置(正在更新icloud设置无法登录)

  • 手机控制台在哪里打开(手机控制台有什么作用)

  • kindle屏幕碎了怎么办(kindle 屏幕裂可免费换)

  • 无线麦克风不响什么原因(无线麦克风不响怎么办)

  • 微信群里抢红包被限制(微信群里抢红包会泄露个人信息吗)

  • 苹果11不能下载软件怎么回事(苹果11不能下载两个微信吗)

  • 华为手机设置自动开关机(华为手机设置自动通话录音)

  • 手机可以共享屏幕吗(手机可以共享屏幕的软件有哪些)

  • unsigned int数据的取值范围(unsignedint型数据的取值范围)

  • 华为手机删除的app怎么找回来(华为手机删除的信息怎样才能找回来)

  • ipad2018能不能用鼠标(iPad2018能不能用pencil)

  • 京东保修服务要买吗(京东保修服务要发票吗)

  • 打印预览快捷键ctrl加什么(excel打印预览快捷键)

  • 华为mate30怎么截屏(华为mate30怎么截屏的4种方法)

  • 淘宝发货无需物流什么意思(淘宝发货无需物流有哪些规定要求)

  • mini5有没有必要配笔(有了mini5还有必要买pro吗)

  • pr视频剪辑吃显卡吗(pr视频剪辑吃显卡还是cpu)

  • 个性电量显示怎么设置(个性状态栏电量图标)

  • 移动黑色卡是特殊卡么(移动黑色卡是特别卡吗)

  • c4d全局光照在哪里(c4d全局光照在哪里打开)

  • 小米8怎么把刘海关了(小米八怎么隐藏刘海屏)

  • Win11是否能玩Steam上的游戏 Win11可以装Steam吗(win11可以玩游戏吗)

  • Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流

  • js中字符串位置的搜索方法(js 字符串 中 字符位置)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络