位置: 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 文档)

  • 农业免税收入怎么填纳税申报表
  • 国税如何零申报
  • 比赛奖金要交税么
  • 房产税应该怎么申报
  • 企业轿车报废
  • 应付账款现金流量表指定
  • 资产负债表中本期盈余等于什么?
  • 非主营业务收入计入什么科目
  • 进项税转出的发票怎么认证
  • 承兑多付了退现金网银备注什么
  • 多交的季度所得税怎么算
  • 债权利息收入要交所得税吗
  • 存在银行保证金计入什么会计科目
  • 冲回年初未年初分配利润分录
  • 电子发票可以认证几次
  • 增值税专用发票抵扣期限
  • 企业房租收入营改增
  • 税务稽查补缴的税款需要申报吗
  • 未分配利润怎么处理
  • 国有资产拍买网
  • 个税如何绑定新公司
  • 发票金额与实际付款金额不一致
  • 怎么访问海康硬盘录像机
  • 苹果macbookpro分辨率是多少
  • 供应商收费标准
  • php写post接口
  • PHP:mb_strrpos()的用法_mbstring函数
  • PHP:session_destroy()的用法_Session函数
  • 企业税收有哪些部分组成
  • 股票期权行权的基本每股收益怎么算
  • php实现用户登录
  • thinkphp批量修改
  • 国家最高科技奖2018
  • 全资子公司取得注册证可以免临床
  • php的api接口
  • 未确认融资费用账务处理
  • 固定资产减值准备可以转回吗
  • 年度成本费用总额公式
  • 如何快速上手看门狗2
  • 前端工程化解决方案
  • 增值税普通发票和专用发票有什么区别
  • 证券公司代理发行
  • 金融资产的转换
  • 现金流量表里的其他指的是什么
  • 代管资金支出怎么做账
  • 使用时间
  • sql server基本知识
  • 更改Mysql root用户密码
  • mysql常用命令语句
  • 怎样备份mysql数据库
  • 事业单位其他支出科目
  • 预付账款计提减值吗
  • 农业保险赔付率数据查询
  • 冲减和冲销的会计分录
  • 账户设置的三种情况
  • 业务招待费是销售
  • 工业企业建立账套
  • 纳税人虽设置账簿,但账目混乱
  • 拖放文件到此处来添加文件是什么意思
  • win10设置设备
  • xp系统本地用户和组在哪里
  • win8任务管理器打不开怎么办
  • win8.1怎么用
  • 360对win7支持多久
  • linux系统怎么启动软件
  • 系统时间错乱如何使用NTP进行系统时间调整
  • 所见即所得出自哪里
  • 批处理的扩展名
  • 有没有改善
  • node js 前端
  • android圆形按钮
  • canvas+javascript
  • jquery封装原理
  • 甘肃省网上税务登记流程
  • 2018建筑材料考试试题及答案河南卷
  • 中国进口奶粉关税税率表2019
  • 个人所得税年申报与月申报区别
  • 电信宽带欠费滞纳金最多减免多少?
  • 年休假期间工资支付标准
  • 浙江医保怎么使用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设