实现对人类属性进行封装
时间: 2023-05-28 16:04:21 浏览: 39
人类属性可以包括性别、年龄、身高、体重、职业等等,封装可以使用面向对象的方式来实现。
1. 定义一个人类属性的类,如下所示:
```python
class Person:
def __init__(self, gender, age, height, weight, occupation):
self.gender = gender
self.age = age
self.height = height
self.weight = weight
self.occupation = occupation
```
2. 对于每个属性,可以定义相应的getter和setter方法,以便外部程序可以访问和修改这些属性:
```python
class Person:
def __init__(self, gender, age, height, weight, occupation):
self._gender = gender
self._age = age
self._height = height
self._weight = weight
self._occupation = occupation
def get_gender(self):
return self._gender
def set_gender(self, gender):
self._gender = gender
def get_age(self):
return self._age
def set_age(self, age):
self._age = age
def get_height(self):
return self._height
def set_height(self, height):
self._height = height
def get_weight(self):
return self._weight
def set_weight(self, weight):
self._weight = weight
def get_occupation(self):
return self._occupation
def set_occupation(self, occupation):
self._occupation = occupation
```
3. 为了方便使用,可以定义一些常用的方法,如获取BMI值等:
```python
class Person:
def __init__(self, gender, age, height, weight, occupation):
self._gender = gender
self._age = age
self._height = height
self._weight = weight
self._occupation = occupation
def get_gender(self):
return self._gender
def set_gender(self, gender):
self._gender = gender
def get_age(self):
return self._age
def set_age(self, age):
self._age = age
def get_height(self):
return self._height
def set_height(self, height):
self._height = height
def get_weight(self):
return self._weight
def set_weight(self, weight):
self._weight = weight
def get_occupation(self):
return self._occupation
def set_occupation(self, occupation):
self._occupation = occupation
def get_bmi(self):
return round(self._weight / (self._height ** 2), 2)
def is_obese(self):
bmi = self.get_bmi()
if self._gender == 'male':
return bmi >= 30
else:
return bmi >= 28
```
这样,我们就可以创建一个Person对象,设置和获取各种属性,以及调用常用的方法了:
```python
person = Person('male', 30, 1.8, 80, 'engineer')
person.set_age(35)
print(person.get_age()) # 输出35
print(person.get_bmi()) # 输出24.69
print(person.is_obese()) # 输出False
```