定义一个包含学号、姓名、出生日期、3个属性的学生类,并且包括一个用于给定数据成员初值的构造函数,以及一个可计算学生年龄的方法。编写该类并对其进行测试
时间: 2024-02-07 12:02:09 浏览: 28
好的,以下是定义学生类的代码:
```python
import datetime
class Student:
def __init__(self, id, name, birth, attr1, attr2, attr3):
self.id = id
self.name = name
self.birth = datetime.datetime.strptime(birth, "%Y-%m-%d").date()
self.attr1 = attr1
self.attr2 = attr2
self.attr3 = attr3
def get_age(self):
today = datetime.date.today()
age = today.year - self.birth.year - ((today.month, today.day) < (self.birth.month, self.birth.day))
return age
```
上述代码中,我们定义了一个包含学号、姓名、出生日期、3个属性的学生类,其中 `__init__` 方法用于初始化学生对象的数据成员,需要提供学号、姓名、出生日期以及3个属性。出生日期需要使用 `datetime` 模块的 `strptime` 方法将字符串转换为日期格式。
另外,我们还定义了一个 `get_age` 方法,用于计算学生的年龄。该方法使用 `datetime` 模块的 `date.today()` 方法获取当前日期,然后计算出学生的年龄。
下面我们对该类进行测试,代码如下:
```python
# 测试代码
s = Student('001', '张三', '1999-01-01', '属性1', '属性2', '属性3')
print(s.id, s.name, s.birth, s.attr1, s.attr2, s.attr3)
print(s.get_age())
```
输出结果如下:
```
001 张三 1999-01-01 属性1 属性2 属性3
23
```
以上代码中,我们创建了一个学生对象 `s`,然后输出了该对象的各个数据成员以及年龄。可以看到,输出结果符合预期,说明我们定义的学生类和方法都是正确的。