Discuss / Python / 打卡第四天,今天没想法,后续补

打卡第四天,今天没想法,后续补

Topic source

class Student(object):

    def __init__(self, name, __gender):

        self.name = name

        self.gender = __gender

    def get_gender(self, gender)

        self.gender=__gender

    def set_gender(self,gender)

        self.gender=__gender

补充如下:

class Student(object):

    def __init__(self, name, gender):

        self.__gender = gender

    def get_gender(self):

        return self.__gender

    def set_gender(self, gender):

        if gender=='male' or gender=='female':

            self.__gender=gender

        else:

            raise ValueError('bad value')

补充教程的内容:

class Student(object):    def __init__(self, name, score):        self.__name = name        self.__score = score    #私有变量,外部无法访问__name    def print_score(self):        print('%s: %s' % (self.__name, self.__score))    #外部获取name,score    def get_name(self):        return self.__name    def get_score(self):        return self.__score    #允许外部资源修改name、score    #在方法中可以对参数做检查,避免传入无效的参数    def set_name(self,name):        self.__name = name    def set_score(self, score):        if 0 <= score <= 100:            self.__score = score        else:            raise ValueError('bad score')    #变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,    # 是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名。bat= Student('mary',90)#不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量# print(bat.__name)print(bat._Student__name)

  • 1

Reply