# property 属性 # 属性的改 @property @age.setter @age.deleter

 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

 

上一篇:2021-11-02


下一篇:2021-11-02