python类属性访问限制

class Student(object):

    def __init__(self, name, score):
        self.__name = name              # 双下划线变为private,只有内部可以访问
        self.__score = score

    def get_name(self):                 # 外部获取属性的办法
        return self.__name

    def get_score(self):                # 允许外部代码修改属性
        return self.__score

    def set_score(self, score):
        if 0 <= score <= 100:
            self.__score = score
        else:
            raise ValueError('bad score')
#费尽周折定义方法来修改属性的原因:
#在方法中可以对参数做检查,避免传入无效的参数
    def get_grade(self):
        if self.__score >= 90:
            return 'A'
        elif self.__score >= 60:
            return 'B'
        else:
            return 'C'

bart = Student('Bart Simpson', 59)
print('bart.get_name() =', bart.get_name())
bart.set_score(60)
print('bart.get_score() =', bart.get_score())

print('DO NOT use bart._Student__name:', bart._Student__name)
#可以通过_Student__name来访问__name变量,但不建议这么干(基于不同的python解释器)  
#输出结果:
bart.get_name() = Bart Simpson
bart.get_score() = 60
DO NOT use bart._Student__name: Bart Simpson  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容