Python调试时如何查看类实例的双下划线隐藏参数内容
Python调试时查看双下划线隐藏属性的方法
Python的双下划线开头属性不存在强访问限制,所谓“隐藏”只是解释器自动做了名称修饰(Name Mangling),调试时可以通过以下三种方式直接查看属性值:
直接通过修饰后的真实属性名访问
名称修饰的规则是:属性会被重命名为_类名__原属性名。对应给出的示例代码,在Spyder调试控制台断点停在arithmetic方法内时,直接执行:self._ExampleClass__hiddenVar就能正常返回属性值4,不会报属性不存在的错误。
通过实例属性字典全量查看
所有Python实例的属性都存在内置的__dict__字典中,不会被名称修饰隐藏。调试时执行:self.__dict__会直接返回实例绑定的全部键值对,示例中返回结果为
{'_ExampleClass__hiddenVar': 4, 'visibleVar': 4},不需要提前记忆修饰规则就能看到所有属性的真实名称和对应值。直接用Spyder自带的变量浏览器查看
断点触发后,Spyder界面的Variable Explorer面板会展示当前栈帧的所有变量,找到self条目点击展开,就能看到实例下的所有属性,包括被名称修饰的隐藏属性,直接点击条目就能查看值,不需要手动在控制台输入命令。
注意:
_类名__属性名的访问方式属于违反类封装的写法,仅建议在调试排查问题时使用,不要在正式业务代码中用这种方式跨类访问私有属性。
内容的提问来源于stack exchange,提问作者Data4711
相关产品推荐
相关产品推荐

