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