1 # # property 属性 2 # # 一.属性的初识 3 # """ 4 # 例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解) 5 # 6 # 成人的BMI数值: 7 # 过轻:低于18.5 8 # 正常:18.5-23.9 9 # 过重:24-27 10 # 肥胖:28-32 11 # 非常肥胖, 高于32 12 # 体质指数(BMI)=体重(kg)÷身高^2(m) 13 # EX:70kg÷(1.75×1.75)=22.86 14 # """ 15 # 16 # 17 class Person: 18 def __init__(self, name, weight, high): 19 self.name = name 20 self.weight = weight 21 self.high = high 22 23 @property 24 def bmi(self): 25 bm = (self.weight / self.high ** 2) 26 27 print(f"您好{self.name},你的身高是{self.high}米,体重是{self.weight}千克,你的BMI指数是{bm}") 28 if 18.5 <= bm <= 23.9: 29 return '体重正常' 30 elif bm < 18.5: 31 return '体重过轻' 32 elif 23.9 < bm <= 27: 33 return '过重' 34 elif 27 < bm <= 32: 35 return '肥胖' 36 else: 37 return '过度肥胖' 38 39 40 # 属性: 将一个方法 伪装成一个属性在代码上没有本质的提升, 41 # 但是让其看起来更合理 42 p1 = Person('yuxin', 81, 1.74) 43 print(p1.bmi) 44 45 46 # 属性的改 47 class Person: 48 def __init__(self, name, age): 49 self.name = name 50 if type(age) is int: 51 self.__age = age 52 else: 53 print("你输入的年龄类型有误,请输入整型数字") 54 55 @property 56 def age(self): 57 return self.__age 58 59 @age.setter 60 def age(self, a1): 61 self.__age = a1 if type(a1) is int else print("你输入的年龄类型有误,请输入整型数字") 62 63 @age.deleter 64 def age(self): 65 print("666") 66 67 68 p1 = Person('帅哥', 20) 69 p1.age = 26 70 print(p1.age) 71 # property: 类似于bmi area 周长.... 72 del p1.age