从文件A调用文件B中的类,然后在文件A中引用文件B的变量

时间:2019-04-26 17:24:08

标签: python python-3.x

我有两个.py文件。第一个包含一个类。第二个导入该类及其函数,然后尝试在本地引用该函数中的变量,如下所示:

文件B:

class master_test():
    def __init__(self):
        pass

    def func_one(self, var1, var2, var3):
        if var1 == 1:
            print('first')
        else:
            print('second')
        if var2 == 2:
            print('first')
        else:
            print('second')
        if var3 == 3:
            print('first')
        else:
            print('second')
        return var1, var2, var3

文件A:

import sys
sys.path.append('G:\Python36\Test\Folder_1')
from Test1 import *

test_var = master_test()
test_var.func_one(6,7,8)

temp = var1
print(temp)

但是,当我运行文件A时,出现以下错误:

Traceback (most recent call last):
  File "G:/Python36/Test/Master.py", line 8, in <module>
    temp = var1
NameError: name 'var1' is not defined

我在做什么错了?

谢谢

2 个答案:

答案 0 :(得分:3)

var1是一个局部变量,您不能在函数外部访问它。

但是它会返回它,因此您可以分配结果。

x, y, z = test_var.func_one(6, 7, 8)
print(x)

答案 1 :(得分:0)

var1不是Test1.py中的模块级变量。它属于类func_one的函数master_test。类不是对象,类是创建对象的模板。您可以有多个master_test对象。

假设您有以下代码:

from Test1 import master_test

test_var1 = master_test()
test_var2 = master_test()

test_var1.func_one(6,7,8)
test_var2.func_one(2,3,4)

现在,如果您想引用var1,您甚至想要哪个?是来自test_var1还是来自test_var2?您需要重新考虑如何传递数据。从函数传回数据的正确方法是使用return语句。

temp, _, _ = test_var1.func_one(6, 7, 8)

这会将temp设置为等于var1,即6。