Discuss / Python / 123
class Student():    def __init__(self, name: str, score: int = 0, gender='unknown'):        self.__name = name        self.__score = score        self.__gender = gender    def print_score(self):        print('Name:%s Score:%s' % (self.__name, self.__score))    def get_name(self):        return self.__name    def get_score(self):        return self.__score    def set_score(self, score: int):        if 0 <= score < 100:            self.__score = score        else:            raise ValueError('不合法的分数数值')    def get_gender(self):        return self.__gender    def set_gender(self, gender):        if not isinstance(gender, str):            raise TypeError('gender must be str type')        if gender in ('male', 'female', 'unknown'):            self.__gender = gender        else:            raise ValueError('gender value Error')student = Student('Bob')student2 = Student('Domi', score=88)student.print_score()print(student.__getattribute__('_' + student.__class__.__name__ + '__name'))print(student._Student__name)student.__setattr__('_' + student.__class__.__name__ + '__name', 'Bill')student.print_score()print('----------------------------------')try:    student.set_score(123)except ValueError as e:    print(e)try:    student.set_score('12')except TypeError as e:    print(e)student.__setattr__('_' + student.__class__.__name__ + '__score', 101)student.print_score()student.__setattr__('_' + student.__class__.__name__ + '__score', 'ddd')student.print_score()student._Student__score = 'ams'student.print_score()try:    print(student.__score)except Exception as e:    print(e)student.__score = 'emmmmm'print(student.__score)print(student.get_score())print(student.__getattribute__('__score'))bart = Student('Bart', gender='male')if bart.get_gender() != 'male':    print('测试失败!')else:    bart.set_gender('female')    if bart.get_gender() != 'female':        print('测试失败!')    else:        print('测试成功!')

  • 1

Reply