博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象-特性property
阅读量:5012 次
发布时间:2019-06-12

本文共 1109 字,大约阅读时间需要 3 分钟。

什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值
例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解) 成人的BMI数值: 过轻:低于18.5 正常:18.5-23.9 过重:24-27 肥胖:28-32 非常肥胖, 高于32 体质指数(BMI)=体重(kg)÷身高^2(m)
class People:    def __init__(self,name,weight,height):        self.name=name        self.weight=weight        self.height=height    @property    #加上这个装饰器    def bmi(self):       return self.weight / (self.height **2 )p1=People('egon',75,1.81)print(p1.bmi)   # 调用函数直接 打印函数名,不用加括号了#实际上是一个方法  不可以 做属性的再赋值

 

class People:    def __init__(self,name):        self.__name=name    @property    #调取    def name(self):        print('getter')        return self.__name    @name.setter   #赋值    def name(self,val):        print('setter',val)        if not isinstance(val,str):            print('名字必须是字符串')            return        self.__name=val    @name.deleter    def name(self):        print('deleter')        print('不允许删除')p=People('egon')print(p.name)p.name='EGON'
为什么要用property 将一个类的函数定义成特性以后,对象再去使用的时候obj.name, 根本无法察觉自己的name是执行了一个函数然后计算出来的, 这种特性的使用方式遵循了统一访问的原则

转载于:https://www.cnblogs.com/hexiaorui123/p/10201462.html

你可能感兴趣的文章
z-stack中数据的发送,广播、组播、点对点
查看>>
Practial Vim 学习笔记一
查看>>
.NET中使用js实现百度搜索下拉提示效果[不是局部刷新,呜呜。。]
查看>>
ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
查看>>
关于二维码“QR”的6大注意事项
查看>>
MySQL - 常用命令及常用查询SQL
查看>>
C# .NET MVC 接收 JSON ,POST,WCF 无缝隙切换
查看>>
android获取USB设备的名称
查看>>
JavaPersistenceWithHibernate第二版笔记-第七章-005排序的集合(@org.hibernate.annotations.SortComparator)...
查看>>
ue4同c#通信时的中文乱码问题
查看>>
黄老师架构师课程笔记(二)
查看>>
mvc性能优化
查看>>
log
查看>>
663 如何做“低端”产品?(如何把低端做得高端 - 认同感)
查看>>
JDBC 第九课 —— 初次接触 JUnit
查看>>
Windows核心编程:第10章 同步设备IO与异步设备IO
查看>>
浏览器加载、解析、渲染的过程
查看>>
开放api接口签名验证
查看>>
sed 常用操作纪实
查看>>
C++复习:对C的拓展
查看>>