自定义学生类Student,成员包含:实例属性sno、sname、age,类属性count,实例方法show(用于显示sno、sname、age信息),类方法classAddCount(实现count属性累加1),静态方法staticShowCount(显示当前count值)。要求属性全部为私有。并完成如下问题:
(1)创建两个Student对象,分别访问上述成员方法,同时用类名访问上述成员方法,输 出结果。
(2)为Student对象动态增加新成员性别sex和方法setGrade(设置学生年级)
(3)在类外部访问sno私有实例属性
(4)我们知道,若在类外部通过对象尝试修改age值是允许的,但是直接修改属性值可能带来一些问题。例如,可能直接设置成不合法的值,如age=-10。所以,为了避免客户端直接修改属性的问题,请在类中提供get()方法返回age的值,以及set()方法设置age的新值,age>0时设置成为新值,age<=0时,提示设置年龄不合法。
你是思路不清楚,还是要完整源代码呢?参考代码:
class Student:
count = 0 # 类属性 记录班里一共多少个学生
def __init__(self, name, sex, age,): # 初始化,构造函数
self.name = name
self.age = age
self.sex = sex
self.__money = 0
print(f"欢迎新同学{self.name},{self.sex},{self.age}")
Student.count += 1 # 每次被实例化一次班里学生+1
country = "中国"
def get_country(self): # 获取国家
return self.country
def set_country(self,country): # 修改类属性
self.country = country
def get_money(self):
print(f"{self.name} 余额:{self.__money}")
return self.__money
def set_money(self,money): # 修改类属性money
self.__money = money
def __study(self): # 私有方法 在外部无法直接调用
print(f"{self.name}:在学习")
def answer(self):
print(f"{self.name}:在回答问题")
def class_(self): # 公有方法调用调用私有方法
self.__study()
def main():
zs = Student("张三","男",20) # 张三,20,男
print(f"国家 {zs.get_country()}")
zs.get_money()
zs.class_()
zs.answer()
Tom = Student("Tom","男",19) #Tom, 19, 男
Tom.set_money(10000) # 余额修改为10000
Tom.set_country("美国") # 改变国籍为美国
print(f"国家 {Tom.get_country()}")
Tom.get_money()
Tom.class_()
Tom.answer()
zss = Student("吴敏", "女", 18) # 吴敏,18,女
print(f"国家 {zss.get_country()}")
zss.get_money()
zss.class_()
zss.answer()
print (f"班级学生总数为:{Student.num}位同学")
main()
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y