访问限制

我们知道,将类的属性设置为__xxx时,不能被外部访问,但setattr(p,'__xxx',xxx)可以访问p.__xxx,原因如下:

__score不能被外部访问是因为Python解释器自动把class内部的__score变成了_Person__score

也就是说,class内部的__score被实际替换成_Person__score

而setattr(p, '__score', 88)是给p加了一个__score属性,这个__score和class内部的__score不是同一个

也就是说我们仍然可以通过p._Person__score来获取__score的值

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