python - 如何将函数的结果从一个文件传递到另一个文件
问题描述
当我在主文件(名为 INPUT.py)中打印函数的结果时出现错误。这些函数在另一个文件(名为 ENGINE.py)中生成。错误是: AttributeError: module 'ENGINE' has no attribute 'cross_section' 我不明白为什么会出现这样的错误。
这里的代码示例:
#-- 主文件:INPUT.py
class Duct:
def __init__(self, width, height):
self.width = width
self.height = height
Duct_ret = Duct(0.1, 0.1)
Duct_ret.width= 0.4
Duct_ret.height= 0.3
import ENGINE as EN
print(EN.cross_section)
#-- 引擎文件:ENGINE.py
from INPUT import width, height
def cross_section(self,):
c_s=height*width
return c_s
错误:AttributeError:模块“ENGINE”没有属性“cross_section”
解决方案
发生这种情况是因为您的代码中有循环依赖。
在ENGINE.py
,你导入height
和width
在INPUT.py
你导入ENGINE
。
您应该将Duct_ret.height
and传递Duct_ret.width
给您的辅助函数,而不是导入它。
所以代替这个:
import ENGINE as EN
print(EN.cross_section)
做这个:
import ENGINE as EN
print(EN.cross_section(Duct_ret.height, Duct_ret.width))
在 中ENGINE.py
,像这样定义函数:
def cross_section(height, width):
c_s = height * width
return c_s
注意:您还有一个不正确self
的参数,因为它不是类方法 - 您只需将相关参数传递给函数(您的原始代码没有)。cross_section
cross_section
旁注:在这种情况下,您应该将您import
的文件移到文件的开头以INPUT.py
获得更好的样式。
推荐阅读
- oracle - 如何在交互式网格中格式化值,以便在 Oracle APEX 中将每个冒号替换为换行符以进行显示
- electron-builder - Electron-Builder 为本地依赖安装了错误的预构建(串行端口)
- r - 我如何在 R 的不同行中使用乘数
- opengl - 如果包含输入图像,OpenGL 计算着色器将无法编译
- excel - 通过单击选择一个对象
- html - 对齐列元素底部 - WordPress CSS
- javascript - 如何更改 Div 的位置并将其返回到单击时的先前位置?
- r - R数据框:使用as.numeric函数时数字变为NA
- php - Flutter / Dart - 将文件发布到服务器上的目录和用户信息到 Mysql 数据库
- r - GAM(mgcv)中分类术语之间的相互作用