分享

如何访问私有属性?

 明哥品书 2020-12-17
如何访问私有属性?

正常情况下,调用私有方法是不能访问的,如下面的代码
    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根据内定的规则,对其进行了封装。
    直接访问封装后的属性名,就可以轻松访问之前定义的私有属性中的内容了。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多