You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks外部Notebook查看Python类私有变量运行时值?

解决Databricks中查看Python类私有变量值的问题

首先纠正你示例代码里的几个关键问题,否则代码无法正常运行:

  • 类内部的方法必须携带self参数,比如testfunc应定义为def testfunc(self):
  • 你实例化wrapperfunction时传入了参数'testing',但类中未定义__init__方法接收该参数

回到查看私有变量的核心问题:Python中以__开头的私有变量会被名称修饰,实际存储的变量名会变成_类名__变量名格式,比如你的__testvalue在wrapperfunction类中会被处理为_wrapperfunction__testvalue,因此直接用vars(my_obj)无法获取到。

以下是几种实用的调试查看方法:

  • 方法1:直接访问修饰后的变量名
    先通过dir(my_obj)查看对象的所有属性,找到修饰后的变量名,再直接访问:

    my_obj = wrapperfunction('testing')
    my_obj.testfunc()  # 必须先调用赋值私有变量的方法
    print(my_obj._wrapperfunction__testvalue)
    
  • 方法2:在类中添加调试专用方法
    在类内新增一个返回私有变量的方法,方便调试时调用:

    class wrapperfunction():
        def __init__(self, param):
            self.param = param
        
        def testfunc(self):
            self.__testvalue = 123
        
        # 调试用方法,仅用于查看私有变量
        def debug_get_testvalue(self):
            return self.__testvalue
    

    主Notebook中调用:

    my_obj = wrapperfunction('testing')
    my_obj.testfunc()
    print(my_obj.debug_get_testvalue())
    
  • 方法3:通过__dict__查看所有实例属性
    对象的__dict__属性会包含所有实例属性,包括被修饰后的私有变量:

    my_obj = wrapperfunction('testing')
    my_obj.testfunc()
    print(my_obj.__dict__)
    # 输出示例:{'param': 'testing', '_wrapperfunction__testvalue': 123}
    
  • 方法4:临时修改变量名(仅调试阶段使用)
    调试期间可将__testvalue改为_testvalue(单下划线,Python约定的保护变量),这样直接通过my_obj._testvalue或vars(my_obj)就能访问,调试完成后再改回双下划线。

注意:必须先调用赋值私有变量的方法(比如testfunc()),否则变量尚未被创建,自然无法获取到值。

内容的提问来源于stack exchange,提问作者Pysparker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:10:33