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

Python:如何从另一个模块的类访问函数?,python,python-3.x,python-import,Python,Python 3.x,Python Import,所以,我有一个项目结构如下 Project | |--- Module1 |----- __init__.py |----- A.py |----- 1B.py |---- update() |--- Module2 |----- __init__.py |----- C.py |----- D.py |---

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

Project
   |
   |--- Module1
          |----- __init__.py 
          |----- A.py
          |----- 1B.py
                   |---- update()
   |--- Module2
          |----- __init__.py 
          |----- C.py
          |----- D.py
   |--- Tests
          |----- Test1.py
我对python中的模块化结构非常陌生。因此,我看到的所有示例都将init.py作为一个空文件。我想它需要在那里把Module1变成
module

我正试图在
Test1.py

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

如何从
Module1
导入
1B.py
,然后使用
update
方法

import sys
sys.path.insert(0,"../")

class Test1(unittest.TestCase):
    def test_update(self):
        target = __import__("Module1.1B",fromlist=[])
        print(target.Solution)
  • 我从Module1.1B中尝试了
    这会引发错误,因此我使用了导入 当我打印
    target

  • 这是否意味着我成功访问了模块
    模块1

  • 为了实现这一点,我将sys.path.insert添加到路径中,以便它可以引用父文件夹

  • 我试图做的是,我将为测试文件中的每个类或函数都有一个专用的测试函数


我不确定我在这里做错了什么。

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

来自模块1导入1B.B
B类=B()
bclass.update()
此外,您的init.py文件还应导入所需的模块

导入模块1.A
进口模块1.1B
建议使用而不是
\uuuuuu导入
。正如文档所指定的,您可以用绝对或相对术语指定name参数


另外,您不需要使用
sys.path.insert
:只需使用
python-m pkg.script\u name
(省略
.py
)调用测试脚本即可。

哦,我明白了。我把术语弄错了。此外,对于以数字开头的文件,导入将不起作用。据我所知,我必须使用进口。此外,我应该使用importlib而不是import,因此,我找到了这个问题的答案。我必须插入
sys.path.insert(0,“…”
,并使用对我有效的
importlib
。但是根据,使用sys.path是一种肮脏的方法。我将尝试使用前面提到的
setuptools
方法。虽然我不知道为什么从父目录获取一个包会有这么多麻烦。在其他语言中,这很容易。