如何访问私有属性? 正常情况下,调用私有方法是不能访问的,如下面的代码 class Test(object): def __test(self): print("---Test test---") a = Test() a.__test() # 此时这个方法是访问不了的。 【报错】 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Test' object has no attribute '__test' 使用代码:dir(类名)可以查看该类名下的所有私有属性,包括已经定义的私有属性。如: dir(Test) ['_Test__test', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__in it__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__s tr__', '__subclasshook__', '__weakref__'] 第一个就是我们之前定义的私有属性,仔细查看发现与我们定义的有所区别。 输入这个私有属性,结果就可以访问,如下面的代码: a._Test__test() 【总结】 我们定义的私有属性,之所以不能直接访问。 是因为Python根据内定的规则,对其进行了封装。 直接访问封装后的属性名,就可以轻松访问之前定义的私有属性中的内容了。 |
|