property
1.什么是property?
是一个python内置的装饰器,可以装饰在“类内部的方法”上。
可以将该方法调用方式有----->对象.方法()----->对象.方法
2.为什么用property?
ps:在某些场景下,调用的方法知识用来获取计算后的某种值。
ps:必须通过 对象.方法()方式调用,让该方法看起来像动词
目的是为了迷惑调用者,调用的方法误以为是属性
3.如何用?
# 需求: 计算人体 bmi 指数
# 体重 / 身高的平方
# value = weight / (height * height)
class User:
def __init__(self, name, weight, height):
self.__name = name
self.weight = weight
self.height = height
# 获取bmi指数方法
@property
def bmi(self):
# return self.weight / (self.height * self.height)
return self.weight / (self.height ** 2)
@property
def name(self):
return self.__name
# 了解: 设置被property装饰后的方法
# 注意: 需要修改的方法名字要与被property装饰器后的方法一样
@name.setter
def name(self, value): # '赵shuai兵' --- 》 value
self.__name = value
@name.deleter
def name(self): # 删除属性
del self.__name
user_obj = User('HCY', 100, 1.9)
user_obj.bmi()()
print(user_obj.bmi())
# user_obj.bmi()
print(user_obj.bmi)
# 报错
# user_obj.bmi() = 29
# user_obj.bmi = 29
# print(user_obj.name())
# print(user_obj.name)
# 修改属性
# user_obj.name = 'zhaoshuaibing'
#
# print(user_obj.name)
# 删除属性
# del user_obj.name
# print(user_obj.name)