python 限制访问

上次在学习python class的时候,我们在class内部定义了属性,在class外部,我们可以通过 实例去访问这些属性。

class Student:
    ....

bart = Student()
print(bart.name)

如果不想让外部访问class内部属性,可以将属性名前加上"__"
这样就能够避免class内部的属性直接被外部访问,意思是将属性设置成private(私有属性)。但是python本身其实没有限制访问的机制,之所以没办法直接访问,是因为python解释器把__name属性自动修改成了_Student__name。我们可以通过实例加_Student__name的方式访问class内部的__name属性,但是,强烈不建议使用这种方式,因为python的版本不同,解释器会将__name属性解释成不同的格式,这么做会导致不同版本的python运行代码会报错。
我们可以通过在class内部定义方法来访问_name,一般名称方式为**get属性名**

class Student(object):
    def __init__(self):
        self.__name=“paul”
        self.__score=87

    def get_name(self):
        return self.__name

同样,如果要修改class的私有变量,可以在class内部定义set_name方法,在方法内,可以对变量进行处理。

你可能感兴趣的:(python 限制访问)