我~第一个来学习的 2021-04-25 19:27 采纳率: 100%
浏览 242
已采纳

python小白求解答

自定义学生类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时,提示设置年龄不合法。

  • 写回答

3条回答 默认 最新

  • 关注

    你是思路不清楚,还是要完整源代码呢?参考代码:

    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()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色