Python定义学生类(类方法,静态方法,动态添加属性)

定义学生类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}")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值