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

如何在另一脚本中调用已创建类对象的成员函数?

问题与解决方案

问题描述

现有类Test2的代码如下:

class Test2:

    def __init__(self):
        self.a=10
            
        self.sq()
    
    def sq(self):
        print(self.a*2)
    
    def call_later(self):
        print("Called Later")

调用脚本代码如下:

from test2 import *
import time

Test2()

time.sleep(30)

# 我想不用重新创建对象就能调用这个函数
Test2.call_later()

需求:创建Test2对象后,延迟一段时间,无需重新创建对象即可调用call_later函数,该如何实现?

解决方案

方法1:保存对象引用

这是最直观的解决方式,把创建的Test2实例赋值给一个变量,后续直接通过变量调用方法:

from test2 import *
import time

# 将实例保存到变量
test_obj = Test2()

time.sleep(30)

# 直接通过变量调用call_later方法
test_obj.call_later()

方法2:将call_later改为静态/类方法

如果call_later不需要访问实例的属性或其他实例方法,可以修改方法类型,直接通过类调用:

  • 静态方法(无需类或实例引用):
class Test2:
    def __init__(self):
        self.a=10
        self.sq()
    
    def sq(self):
        print(self.a*2)
    
    @staticmethod
    def call_later():
        print("Called Later")

调用时直接用Test2.call_later()即可,不需要创建实例。

  • 类方法(需要访问类属性时使用):
class Test2:
    def __init__(self):
        self.a=10
        self.sq()
    
    def sq(self):
        print(self.a*2)
    
    @classmethod
    def call_later(cls):
        print("Called Later")

方法3:用类属性存储实例引用

如果需要在类级别访问已创建的实例,可以在__init__中把当前实例存入类属性,适合单实例场景:

class Test2:
    # 类属性存储实例
    instance = None

    def __init__(self):
        self.a=10
        self.sq()
        # 将当前实例赋值给类属性
        Test2.instance = self
    
    def sq(self):
        print(self.a*2)
    
    def call_later(self):
        print("Called Later")

调用脚本:

from test2 import *
import time

Test2()

time.sleep(30)

# 通过类属性调用实例方法
Test2.instance.call_later()

注意:如果创建多个Test2实例,类属性会被最后一个实例覆盖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:40:18