You need to enable JavaScript to run this app. Python如何在子类方法中打印父类静态方法内部定义的变量
优惠活动
大模型
产品
解决方案
定价
更多

Python如何在子类方法中打印父类静态方法内部定义的变量

Python 子类访问父类静态方法内部局部变量的实现方法

核心原因:父类A的静态方法aFunction中定义的userInputVariable属于方法局部变量,方法执行完毕后会被自动回收,默认无法在外部直接访问,我们只需要在不改动原有打印逻辑的前提下,将该变量透出即可实现需求。

方案1:新增返回值(兼容性最优,推荐)

该方案仅给原静态方法新增返回值,完全不影响原有aFunction的调用逻辑和打印输出:

class A:
    @staticmethod
    def aFunction():
        userInputVariable = input("Enter string: ")
        print("This print function not should use in bFunction but print in aFunction while i call aFunction")
        # 新增返回值,原有逻辑完全不变
        return userInputVariable
        
class B(A):
    # 实例方法补充self参数
    def bFunction(self):
        print(self.stored_input)

b = B()
# 调用aFunction时将返回值存入实例属性
b.stored_input = b.aFunction()
# 调用bFunction打印变量
b.bFunction()

方案2:类属性存储(无需处理返回值)

如果不想修改原有方法的返回值,可以将输入值存入类属性全局共享:

class A:
    # 提前定义类属性存储输入值
    _user_input = None
    @staticmethod
    def aFunction():
        userInputVariable = input("Enter string: ")
        # 将局部变量赋值给类属性
        A._user_input = userInputVariable
        print("This print function not should use in bFunction but print in aFunction while i call aFunction")
        
class B(A):
    def bFunction(self):
        # 直接访问父类的类属性即可
        print(A._user_input)

b = B()
b.aFunction()
b.bFunction()

注意事项

  • 方案1没有全局状态,多实例调用不会互相干扰,是优先选择的实现方式
  • 方案2依赖类属性存储,多实例多次调用aFunction会覆盖之前存储的值,适合单场景单次调用的场景
  • 不推荐使用获取执行上下文、修改局部变量表等黑魔法实现,兼容性差且后续维护成本极高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 14:06:07