python - Python:如何从另一个模块的类中访问函数?
问题描述
所以,我有一个如下的项目结构。
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
which is fromModule1
然后使用update
方法
import sys
sys.path.insert(0,"../")
class Test1(unittest.TestCase):
def test_update(self):
target = __import__("Module1.1B",fromlist=[])
print(target.Solution)
我尝试
from Module1.1B ...
了抛出错误,因此我 在打印时使用了导入<module 'Module1' from '..\\Module1\\__init__.py'>
target
这是否意味着我成功访问了模块
Module1
?同样为了完成这项工作,我将 sys.path.insert 添加到路径中,以便它可以引用父文件夹。
我想要做的是,我将为我的测试文件中的每个类或函数都有一个专用的测试函数。
我不确定我在这里做错了什么。
解决方案
建议使用import_lib.import_module而不是__import__
. 如文档所指定,您可以以绝对或相对术语指定 name 参数。
此外,您不需要使用: 只需使用(省略)sys.path.insert
调用您的测试脚本。python -m pkg.script_name
.py
推荐阅读
- r - 将置信水平传递给 ACF 图
- android - 无法使用 setOnCheckedChange(onCheckedChange) 获得开关侦听器
- xamarin - 如何将网络扩展 NEPacketTunnelProvider 类从 Obj-C/Swift 移植到 Xamarin C#?
- laravel - 如何使用 guzzle 从街景图像元数据中检索响应状态
- python - Alexa 技能套件后备意图未调用
- c++ - 我怎样才能让我的程序手动找到地址?
- javascript - 当我尝试用箭头移动时,为什么我的号码不移动?
- python - 在python中单击按钮时更改变量的值
- css - 如何让动画从中心展开?
- ruby - 不确定为什么Ruby中的while循环会改变参数