Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从文件向上一级调用类函数_Python_Class - Fatal编程技术网

Python:从文件向上一级调用类函数

Python:从文件向上一级调用类函数,python,class,Python,Class,在下面的结构中,我有一个名为global的全局类 root_dir Global.py scripts_dir test.py Global.py class Global: def Test(self): return 'test' from Global import Global globalObj = Global() print(str(globalObj.Test())) test.py class Global: de

在下面的结构中,我有一个名为
global
的全局类

root_dir
   Global.py
   scripts_dir
      test.py
Global.py

class Global:
    def Test(self):
        return 'test'
from Global import Global

globalObj = Global()
print(str(globalObj.Test()))
test.py

class Global:
    def Test(self):
        return 'test'
from Global import Global

globalObj = Global()
print(str(globalObj.Test()))
错误

ModuleNotFoundError: No module named 'Global'

我无法从
Test.py
调用类函数,我已尝试使用
import。。来自全局的全局
也没有运气。

文件夹结构如下:

root_dir
   Global.py
   scripts_dir
      test.py
您至少有两种选择:

  • 您可以从
    root\u dir
    运行
    python-m scripts\u dir.test
    。您将需要
    \uuuu init\uuuuuu.py
    文件,以便
    脚本\u dir
    成为Python包
  • 文件夹结构示例:

    root_dir
       Global.py
       scripts_dir
          __init__.py
          test.py
    
  • 在导入之前,使用
    scripts\u dir
    中的
    python test.py
    和内部,使用
    sys.path.insert
    插入根目录的完整路径
  • 使用
    sys.path
    的示例:

    import os
    import sys
    
    ROOT_DIR = os.path.normpath(os.path.join(os.path.abspath(__file__), '..'))
    sys.path.insert(0, ROOT_DIR)
    
    from Global import Global
    
    globalObj = Global()
    print(str(globalObj.Test()))
    

    文件夹结构为:

    root_dir
       Global.py
       scripts_dir
          test.py
    
    您至少有两种选择:

  • 您可以从
    root\u dir
    运行
    python-m scripts\u dir.test
    。您将需要
    \uuuu init\uuuuuu.py
    文件,以便
    脚本\u dir
    成为Python包
  • 文件夹结构示例:

    root_dir
       Global.py
       scripts_dir
          __init__.py
          test.py
    
  • 在导入之前,使用
    scripts\u dir
    中的
    python test.py
    和内部,使用
    sys.path.insert
    插入根目录的完整路径
  • 使用
    sys.path
    的示例:

    import os
    import sys
    
    ROOT_DIR = os.path.normpath(os.path.join(os.path.abspath(__file__), '..'))
    sys.path.insert(0, ROOT_DIR)
    
    from Global import Global
    
    globalObj = Global()
    print(str(globalObj.Test()))
    

    这不是正确的语法<代码>从全局导入全局是正确的语法。请勿将答案作为注释发布。将它们作为答案发布。你会得到奖励的。@PyCharm先生,谢谢你,我的拼写错误,我已经有了这个正确的语法,但它找不到全局类。@AdamBarnes,这实际上不是答案。这个问题在早期版本中有一个语法错误。我只是指出了这一点。没错,我的错。这不是正确的语法<代码>从全局导入全局是正确的语法。请勿将答案作为注释发布。将它们作为答案发布。你会得到奖励的。@PyCharm先生,谢谢你,我的拼写错误,我已经有了这个正确的语法,但它找不到全局类。@AdamBarnes,这实际上不是答案。这个问题在早期版本中有一个语法错误。只是指出了这一点。没错,我的错。我已经尝试了
    sys.path
    ,没有区别,相同的错误<代码>sys.path.insert(0,参数[3]+'\root\u dir\\\'),来自全局导入全局globalClass=Global()我不确定在
    sys.path
    列表中插入的路径的值是多少。我已经更新了示例,因此您已经根据
    test.py
    脚本的位置自动设置了
    ROOT\u DIR
    <代码>sys.path.insert(0,参数[3]+'\root\u dir\\\'),来自全局导入全局globalClass=Global()我不确定在
    sys.path
    列表中插入的路径的值是多少。我已经更新了示例,因此您可以根据
    test.py
    脚本的位置自动设置
    ROOT\u DIR