我有两个.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
我在做什么错了?
谢谢
答案 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。