property特性

Posted sunny666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了property特性相关的知识,希望对你有一定的参考价值。

什么是property

property是一种特殊属性,访问他时会执行一段功能然后返回值

 

class People:
def __init__(self,name,weight,height):
self.name=name
self.weight=weight
self.height=height

@property           #不加property 调用的是一个函数 print(p.bmi())
    def bmi(self):
return p.weight/(p.height**2)

p=People(‘EGON‘,75,1.81)
print(p.bmi)

为什么要用property

将一个类的函数定义成特性以后,对象再去使用的时候obj.name,

根本无法察觉自己的name是执行了一个函数然后计算出来的,

这种特性的使用方式遵循了统一访问的原则

知识延伸

class Foo:
def __init__(self,val):
self.__NAME=val #将所有的数据属性都隐藏起来

@property
def name(self):
return self.__NAME #obj.name访问的是self.__NAME(这也是真实值的存放位置)

@name.setter     #修改
def name(self,value):
if not isinstance(value,str): #在设定值之前进行类型检查
raise TypeError(‘%s must be str‘ %value)
self.__NAME=value #通过类型检查后,将值value存放到真实的位置self.__NAME

@name.deleter    #删除
def name(self):
raise TypeError(‘Can not delete‘)


f=Foo(‘sunny‘)
print(Foo.__dict__)
print(f.name)
f.name=‘Sunny‘
print(f.name)
del f.name

总结一下:property装饰的函数属性 像 数据属性一样访问,统一了访问原则!

 



































以上是关于property特性的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 快速开发 代码块

Xcode 快速开发 代码块 快捷键

代码片段

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

Xcode自定义代码块