用python设计一个Student类,可以通过构造方法和类方法两种方法进行实例化对象,并打印学生信息: (1)输入学号,姓名,年龄进行实例化对象。 (2)输入学号,姓名,出生年份进行实例化对象。
时间: 2024-12-14 15:13:40 浏览: 35
创建学生(Student)类,并实例化对象访问测试
5星 · 资源好评率100%
在Python中,你可以设计一个名为`Student`的类,包含属性如学号、姓名和年龄或出生年份。以下是这个类的设计示例:
```python
class Student:
def __init__(self, id, name, age=None, birth_year=None):
"""
构造方法,用于实例化对象
:param id: 学生学号
:param name: 学生姓名
:param age: 学生年龄,默认为None
:param birth_year: 学生出生年份,默认为None
"""
self.id = id
self.name = name
if age is not None and birth_year is not None:
raise ValueError("只能提供年龄或出生年份,不能同时提供")
elif age is not None:
self.birth_year = 2023 - age # 如果提供年龄,计算出生年份
else:
self.birth_year = birth_year
@classmethod
def from_birth(cls, id, name, birth_year):
"""
类方法,通过出生年份创建对象
:param id: 学生学号
:param name: 学生姓名
:param birth_year: 学生出生年份
:return: 返回一个新的Student对象实例
"""
return cls(id, name, birth_year=birth_year)
def print_info(self):
"""
打印学生信息
"""
print(f"学生ID: {self.id}, 姓名: {self.name}")
if hasattr(self, 'birth_year'):
print(f"出生年份: {self.birth_year}")
# 使用构造方法实例化
student1 = Student(1001, "张三", 20)
student1.print_info()
# 使用类方法实例化
student2 = Student.from_birth(1002, "李四", 1995)
student2.print_info()
```
在这个例子中,我们有构造方法`__init__`用于接收学号、姓名以及年龄或出生年份,如果两者都提供则会抛出异常。还有类方法`from_birth`,它直接接受出生年份作为参数。最后,`print_info`方法用于显示学生的基本信息。
阅读全文