Python:如何从另一个模块的类访问函数?

时间:2019-08-13 23:10:22

标签: python python-3.x python-import

所以,我有一个如下的项目结构。

Project
   |
   |--- Module1
          |----- __init__.py 
          |----- A.py
          |----- 1B.py
                   |---- update()
   |--- Module2
          |----- __init__.py 
          |----- C.py
          |----- D.py
   |--- Tests
          |----- Test1.py

我对python中的模块化结构非常陌生。因此,我所看到的所有示例都将 init .py作为空文件。我想需要将Module1设为module

我正在尝试将A.py中的Test1.py导入

1B.py具有类B,其类具有方法update(self,x)1B.py文件名是有意的,因为我想知道如何导入以数字开头的文件和以字母开头的文件。

如何导入来自1B.py的{​​{1}},然后使用Module1方法

update
  • 我尝试了import sys sys.path.insert(0,"../") class Test1(unittest.TestCase): def test_update(self): target = __import__("Module1.1B",fromlist=[]) print(target.Solution) 并抛出错误,因此我使用了 import 当我打印from Module1.1B ...

  • 时得到<module 'Module1' from '..\\Module1\\__init__.py'>的位置
  • 这是否意味着我可以成功访问模块target

  • 为使此工作正常进行,我在路径中添加了sys.path.insert,以便它可以引用父文件夹。

  • 我要做的是为我的测试文件中的每个类或函数提供专用的测试功能。

我不确定我在做什么错。

2 个答案:

答案 0 :(得分:1)

建议使用import_lib.import_module而不是__import__。根据文档的指定,您可以使用绝对或相对术语指定name参数。

此外,您不需要使用sys.path.insert:只需使用python -m pkg.script_name调用测试脚本(忽略.py)。

答案 1 :(得分:0)

只要您的包位于将要调用主函数的目录中,就可以导入该类,创建它的实例,然后调用该方法。另外,包含 init 文件的目录也称为包,而您的单个文件(例如A和1B)也称为模块。

   from Module1 import 1B.B
   bclass = B()
   bclass.update()

另外,您的 init .py文件也应导入所需的模块

   import Module1.A
   import Module1.1B