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

Python跨类调用已有实例方法 无需重复创建实例的实现方法

实现方案

完全可以实现,不需要在custom2中重复创建custom1实例,核心逻辑是将mainClass.func()中已经初始化完成的obj1通过参数传递给custom2实例使用,全程复用同一个实例。

方式1:单次调用传参

如果仅func2需要用到custom1的实例,直接在调用func2时将obj1作为参数传入即可,修改后代码如下:

class custom1:
    def func1(self):
        # 原有业务逻辑
        print("执行custom1的func1方法")

class custom2:
    def func2(self, c1_instance):
        # 直接调用传入实例的func1方法
        c1_instance.func1()

class mainClass:
    def func(self):
        obj1 = custom1()
        obj2 = custom2()
        # 传入已创建的obj1,不重复生成实例
        obj2.func2(obj1)

运行时obj2.func2()会直接复用obj1调用方法,没有额外的实例创建开销。

方式2:实例初始化时绑定实例

如果custom2中有多个方法都需要复用同一个custom1实例,可以在初始化custom2的时候就把obj1绑定为custom2的实例属性,避免每次调用方法重复传参:

class custom1:
    def func1(self):
        # 原有业务逻辑
        print("执行custom1的func1方法")

class custom2:
    def __init__(self, c1_instance):
        # 将传入的custom1实例绑定为自身属性
        self.c1 = c1_instance

    def func2(self):
        self.c1.func1()

    def other_func(self):
        # 类内其他方法也可以直接复用同一个custom1实例
        self.c1.func1()

class mainClass:
    def func(self):
        obj1 = custom1()
        # 初始化obj2时就传入已创建的obj1
        obj2 = custom2(obj1)
        obj2.func2()
        obj2.other_func()

注意:不推荐使用全局变量传递obj1,这种写法会大幅提升代码耦合度,后续调试、维护时很难追踪实例的状态变更链路,显式传参是可读性、可维护性最优的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:57:19