zoukankan      html  css  js  c++  java
  • [自用备份]廖雪峰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

    课后补充:

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

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

     

  • 相关阅读:
    log4net详细配置说明
    step by step 之餐饮管理系统三
    CF div2 331 C
    CF div2 331 B
    CF div2 331 A
    poj 2065 还是gauss消元
    poj 3478 poj 3090(欧拉函数的应用)
    poj 1284 求原根的个数(欧拉函数的应用)
    poj 2991 线段树
    poj 1753 poj3185
  • 原文地址:https://www.cnblogs.com/jsacm/p/12425134.html
Copyright © 2011-2022 走看看