1、property是一个装饰器,是用来绑定给对对象的方法伪造一个数据属性
2、说白了就是对于使用者来说:虽然这个东西是一个功能,但是在逻辑上更像是一个数据属性,使用property功能使使用者在逻辑上把这个功能当做数据去使用。
3、例子:
class People:
def __init__(self,name,height,weight):
self.name = name
self.height = height
self.weight
# 但是bmi听起来更像是一个数据属性,而不是功能尽管它定义是功能的形式(且bmi不是固定的)
def bmi(self):
return self.weight / (self.height**2)
@property # get_name = property(get_name)
def get_name(self):
return self.name
def set_name(self):
pass
def del_name(self):
pass
name = property(get_name,set_name,del_name) # 这样做就会让使用者在操作时符合人的正常思维逻辑
# 人的正常思维逻辑
# obj1.name
# obj1.name = 'EGON'
# def obj1.name
@property # 与name = property(get_name,set_name,del_name)作用相同
def name(self): # 定义成想让外部访问者访问的名字
return self.name
@name.setter
def name(self):
pass
@name.deleter
def name(self):
pass