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

如何在Python跨文件的另一个类中使用实例变量

如何在Python跨文件的类之间传递数据?

嘿,我来帮你搞定这个问题~你现在的核心问题是file1里One类的getData方法中定义的局部变量无法被file2的Two类访问,而且你的file2代码里还有个小错误(把pin_code写成了pin),下面给你两种可行的解决方案:

问题回顾

你的现有代码:

file1.py

class One: 
    def __init__(self): 
        pass 
    def getData(self): 
        username = input("Enter username:")
        pin_code = input("Enter PIN code:")

file2.py

class Two: 
    def __init__(self): 
        pass 
    def dataFromOtherFile(self): 
        print("username and pin code in file1 was",username , pin)

解决方案1:让getData返回数据

修改One类的getData方法,让它返回获取到的username和pin_code,然后在Two类中实例化One并调用方法拿到数据:

修改后的file1.py

class One:
    def __init__(self):
        pass
    
    def getData(self):
        username = input("Enter username:")
        pin_code = input("Enter PIN code:")
        return username, pin_code  # 返回两个变量的值

修改后的file2.py

# 从file1模块导入One类
from file1 import One

class Two:
    def __init__(self):
        pass
    
    def dataFromOtherFile(self):
        # 创建One类的实例
        one_obj = One()
        # 调用getData方法获取用户名和PIN码
        username, pin_code = one_obj.getData()
        # 打印数据
        print("username and pin code in file1 was", username, pin_code)

# 测试代码(可选,用于验证功能)
if __name__ == "__main__":
    two_obj = Two()
    two_obj.dataFromOtherFile()

解决方案2:将数据设为类的实例属性

把username和pin_code变成One类的实例属性,这样只要One的实例存在,就可以直接访问这些属性:

修改后的file1.py

class One:
    def __init__(self):
        # 初始化实例属性
        self.username = None
        self.pin_code = None
    
    def getData(self):
        # 给实例属性赋值
        self.username = input("Enter username:")
        self.pin_code = input("Enter PIN code:")

修改后的file2.py

from file1 import One

class Two:
    def __init__(self):
        pass
    
    def dataFromOtherFile(self):
        one_obj = One()
        one_obj.getData()  # 先调用方法填充实例属性
        # 直接访问实例的属性
        print("username and pin code in file1 was", one_obj.username, one_obj.pin_code)

# 测试代码
if __name__ == "__main__":
    two_obj = Two()
    two_obj.dataFromOtherFile()

两种方案的区别

  • 方案1适合只需要一次性获取数据的场景,拿到返回值后可以直接使用;
  • 方案2更适合后续还需要多次用到这些数据的场景,只要实例没被销毁,随时可以访问属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:20:05