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

Python如何在不修改类函数返回值的前提下跨类获取其内部变量

实现方案

该需求可以实现,以下提供两种可直接落地的操作方式:


方案1:完全匹配你期望的oneClass.func.angle调用写法

利用Python中函数本身也是对象,可自定义绑定属性的特性实现,不需要修改func的返回值。

第一步:修改oneClass的func方法逻辑

class oneClass:
    # 你的原方法没有self参数,补充静态方法装饰器保证调用逻辑正常
    @staticmethod
    def func():
        # ... 原有函数逻辑
        angle = int(result)
        # 新增:给func自身绑定angle属性
        oneClass.func.angle = angle
        # ... 原有函数逻辑
        return img

# 可选:提前初始化angle属性,避免未调用func直接访问时报错
oneClass.func.angle = 0

第二步:另一个类中直接按你期望的方式访问即可

class anotherClass():
    @staticmethod
    def anotherFunc():
        # 注意:必须先调用一次func,angle属性才会更新为最新计算值
        img = oneClass.func()
        target_angle = oneClass.func.angle
        # 后续可正常使用target_angle

方案2:使用类属性存储,更稳定易维护

如果不需要严格匹配oneClass.func.angle的写法,更推荐用类属性存储angle,符合Python常规编码规范,容错率更高。

第一步:修改oneClass定义

class oneClass:
    # 提前定义类属性存储angle
    angle = 0
    @staticmethod
    def func():
        # ... 原有函数逻辑
        angle = int(result)
        # 给类属性赋值
        oneClass.angle = angle
        # ... 原有函数逻辑
        return img

第二步:访问方式

class anotherClass():
    @staticmethod
    def anotherFunc():
        img = oneClass.func()
        target_angle = oneClass.angle

注意事项

  • 两种方案的angle都会跟随func的调用被覆盖为最新计算值,多场景调用时要注意调用时序
  • 你之前全局变量不生效大概率是因为跨模块调用时导入逻辑错误、或者函数内修改全局变量未加global声明,上述方案比全局变量更安全,不会污染全局命名空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:21:00