如何用类调用其他文件python中的变量?

时间:2017-08-03 12:07:44

标签: python multiple-files

大家好我想知道如何从其他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中运行它。

由于

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()