定义学生类Student,成员包含:对象属性:sno、sname、age,类属性count,对象方法show(),用于显示学生信息;类方法addCount(),实现count属性累加1,静态方法showCount(),用于显示count的值。要求所有
属性全部为私有。要求完成以下操作:
(1)创建两个学生对象,输出学生基本信息,实现学生对象的累加,输出学生人数。
(2)为第一个学生对象动态添加属性sex(性别)和方法getName()(用于获取学生的姓名),输出学生的姓名和性别。
参考示例:# 类对象zhangsan动态添加对象方法run()
zhangsan.run = types.MethodType(run, zhangsan) (需要导入types模块)
class Student:
_count = 0 # 类属性count,使用下划线前缀表示私有
def __init__(self, sno, sname, age):
self._sno = sno # 对象属性sno,使用下划线前缀表示私有
self._sname = sname # 对象属性sname,使用下划线前缀表示私有
self._age = age # 对象属性age,使用下划线前缀表示私有
def show(self):
print(f"学生信息: 学号={self._sno}, 姓名={self._sname}, 年龄={self._age}")
@classmethod
def addCount(cls):
cls._count += 1
@staticmethod
def showCount():
print(f"学生人数: {Student._count}")
# (1)创建两个学生对象,输出学生基本信息,实现学生对象的累加,输出学生人数。
student1 = Student('001', '张三', 18)
student2 = Student('002', '李四', 19)
student1.show()
student2.show()
# 实现学生对象的累加(注意:这里你可能想要在创建学生对象时自动累加,但题目要求通过方法实现)
Student.addCount()
Student.addCount()
Student.showCount()
# (2)为第一个学生对象动态添加属性sex(性别)和方法getName()(用于获取学生的姓名)
student1._sex = '男' # 动态添加属性sex
def getName(self):
return self._sname
# 注意:在Python 3中,你可以直接使用setattr和setattr来添加方法和属性
# 但为了符合题目要求,我们使用types模块来添加方法
import types
student1.getName = types.MethodType(getName, student1)
print(f"学生姓名: {student1.getName()}")
print(f"学生性别: {student1._sex}")