不遵守规则,访问python类的私有属性
简介
python的私有属性和java不同,属于防君子不防小人的约定
正常情况下,用户是无法拿到类的私有变量(无法查看和修改)
但是可以通过: 实例._类__私有变量 查看和修改类中定义的私有变量
代码如下,python3.8测试通过
class Student:
def __init__(self):
self.name = "童话"
self.__age = 18
def printage(self):
return self.__age
def main():
student = Student()
print(student.name) # 非私用属性可以直接访问
student.name = "测试" # 非私用属性可以直接修改
# print(student.__age) # 报错: AttributeError: 'Student' object has no attribute '__age'
student.__age = 28 # 看似修改,实则并没有修改
print(student.__age) # 此时并没有修改类中原始age参数
print(student._Student__age) # 不遵守规矩的方法,可以强行查看和修改age
print(student.printage()) # 实际age参数仍然是18
student._Student__age = 38 # 不遵守规矩,强行修改参数
print(student.printage()) # 此时age参数发生变化
if __name__ == '__main__':
main()