• [自用备份]廖雪峰python面向对象习题作业


    时隔n个月,up终于想起了自己的密码.回来更文.因为刚开始写,代码不是很简洁.不过答案都是测试过的.话不多说,Here we go!

    1.练习

    请把下面的Student对象的gender字段对外隐藏起来,用get_gender()set_gender()代替,并检查参数有效性

    解答:

    class Student(object):
        def __init__(self, name, gender):
            self.__name = name
            self.__gender = gender
        def get_name(self):
            return self.__name
        def set_gender(self,gender):
            if self.__gender =='female'or'male':
                self.__gender=gender
            else:
                raise ValueError('bad gender')
    
        def get_gender(self):
            return self.__gender

    课后补充:

    1.这里也可以写成 if gender in('male','female'):

    2.题目上没说名字不能改.但是保险起见,还是把名字限制住

     

    2.练习

    为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加:

    解答:

    class Student(object):
        count = 0
    
        def __init__(self, name):
            self.name = name
            self.__set__count()
        def __set__count(self):
            Student.count +=1

    课后补充:不要让实例属性和类属性的名称相同!

     

    3.练习

    请利用@property给一个Screen对象加上widthheight属性,以及一个只读属性resolution

     解答:

    class Screen(object):
        @property
        def width(self):
            return self._width
        @width.setter
        def width(self,value):
            self._width=value
        @property
        def height(self):
            return self._height
        @height.setter
        def height(self,value):
            self._height=value
        @property
        def resolution(self):
            return self._width*self._height

    课后补充:1.resolution有分辨率的意思,分辨率=长度*宽度

                   2._width和_height是为了区别width和height,不加下划线也行但名字不能相同!

     

     

    4.练习

    Studentgender属性改造为枚举类型,可以避免使用字符串:

    解答:

    from enum import Enum,unique
    @unique
    class Gender(Enum):
        Male = 0
        Female = 1
    class Student(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender

    课后补充:

    这个题不太理解,稀里糊涂地做出来了.

    下面粘贴一段枚举类型的笔记辅助理解.

     

  • 相关阅读:
    Flutter图片选择 image_picker(官方)插件使用详解
    androidstudo如何跨越这个厚厚的墙,亲测有效 Could not resolve com.android.tools.build:gradle:
    qwq。。胡诌qwq
    关于很狗的军训qwq
    Leetcode每日一题 503.下一个更大元素II
    C++ 关于volatlie
    C++虚成员函数与动态联编
    graphics pipeline
    pointer or function
    线段树
  • 原文地址:https://www.cnblogs.com/jsacm/p/12425134.html
Copyright © 2020-2023  润新知