大家好我想知道如何从其他python文件调用变量(在类内)。我知道这样做的bellow方法,但是如果从原始文件中调用类,它将无法工作。
from (insert_file_name_hear) import *
这与我正在使用的样本类似:
functions.py
num = 0
num2 = 0
class Test():
def alt_num(self):
global alt_num
alt = 55
def change(self):
global num, num2
num += alt_num
num2 = num
def print_num():
global num2
print(num2)
def work():
Test.alt_num(Test)
Test.change(Test)
print_num()
print.py
from functions import *
work()
def printing():
print(num2)
printing()
当我运行print.py时,它会准确地在functions.py文件中打印,但是它会在print.py文件中打印0。注意:两个文件都在同一个文件夹中,我在Python 3中运行它。
由于
答案 0 :(得分:1)
您可以使用类变量而不是使用Globals
functions.py
public static void main(String[] args) {
int[] a = { 10, 20, 30, 40, 40, 40, 50, 60, 70, 80, 10 };
Map<Integer, Integer> m = new HashMap<Integer, Integer>();
ArrayList<Integer> al = new ArrayList<Integer>();
for (int i = 0; i < a.length; i++) {
int count = 1;
if (m.containsKey(a[i])) {
m.put(a[i], m.get(a[i]) + 1);
}
else {
m.put(a[i], count);
}
}
for (int i = 0; i < a.length; i++) {
if (m.get(a[i]) > 2) {
} else {
al.add(a[i]);
}
}
System.out.println(al);
}
print.py
class Test():
num = 0
num2 = 0
alt = 0
@classmethod
def alt_num(cls):
cls.alt = 55
@classmethod
def change(cls):
cls.num += cls.alt
cls.num2 = cls.num
def print_num():
print(Test.num2)
def work():
Test.alt_num()
Test.change()
print_num()
Test.change()
print_num()
Test.change()
print_num()
return Test.num2
注意:上面的输出是
55
110
165
165
前三个来自work(),最后一个来自printing()
答案 1 :(得分:0)
首先 - 未定义alt和alt_num 第二 - 您需要通过函数返回变量以在其他地方使用它
以下是如何执行此操作
functions.py
alt = 0
num = 0
num2 = 0
class Test():
def alt_num(self):
global alt
alt = 55
def change(self):
global num, num2
num += alt
num2 = num
def print_num():
global num2
def work():
Test.alt_num(Test)
Test.change(Test)
print_num()
return num2
print.py
from functions import *
def printing():
print(work())
printing()
答案 2 :(得分:0)
在functions.py中声明 num2 = 0 , num2 的其余操作是在不返回新值的函数内进行的。
函数print_num()实际打印 num2 的新值,这是输出中55的来源。
在 print.py 中,您正在打印 functions.py
第2行声明的 num2如果您只对值更新后感兴趣 num2 ,则可以跳过 functions.py 中的打印,而是返回值并从 print.py
它可能看起来像这样。
functions.py
num = 0
class Test():
def alt_num():
global alt
alt = 55
def change():
global num
global num2
num += alt
num2 = num
def work():
Test.alt_num()
Test.change()
return(num2)
print.py
from functions import *
def printing():
print(work())
printing()