欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python 练习题 类

程序员文章站 2022-05-19 14:17:07
...

练习题

定义一个Student类,具有name,sex,score属性。并使用这个类实例化几个不同的对象,检测下述要求是否达成:

1.name为公有属性,sex和score为私有属性。
2.构造函数的参数进行进行检查,如果不合理(类型不合理或者取值不合理),请拒绝生成对象。提示,需要用到isinstance和raise。
3.给两个私有属性添加getter和setter方法。
4.在成绩(score)的getter方法中,如果成绩低于60分,就给他留点面子,返回字符串“反正有点不太理想啦“或者类似的语句。
5.在性别(sex)和成绩(score)的setter方法,进行参数检测,不合理的取值打印出错误信息,最好不要用raise中断程序,简单的拒绝修改就好了。

class Student(object):
    def __init__(self,name,sex,score):
        if not (isinstance(name,str) and isinstance(sex,str) and 0<score<=100):      
            raise TypeError('类型错误')
        self.name=name
        self.__sex=sex
        self.__score=score  #在前面加两个下划线是访问限制的标志
        # 这时候在进行创建对象并调用类属性的时候,对象是无法获得sex和score的赋值权限的。
    def get_sex(self):      #来获取性别
        return self.__sex
    def get_score(self):      #来获取成绩
        if self.__score<60:
            return '反正成绩有点不太理想啦'
        else:
            return self.__score
        
    def set_sex(self,sex):   # 设置性别
        if not (isinstance(sex,str)):
            return TypeError('类型错误')
        self.__sex = sex
    def set_score(self,score):
        if not isinstance(score,int):
            return TypeError('类型错误')
        self.__score = score
    
s=Student('张三','男',30)
s.set_sex('女')
print(s.name,s.get_sex(),s.get_score()) #张三   女    反正成绩有点不太理想啦
                                           #通过调用的方法来间接调用属性