首页 > 解决方案 > 如何将函数的结果从一个文件传递到另一个文件

问题描述

当我在主文件(名为 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”

标签: pythonfunctioninputattributesarguments

解决方案


发生这种情况是因为您的代码中有循环依赖。

ENGINE.py,你导入heightwidthINPUT.py你导入ENGINE

您应该将Duct_ret.heightand传递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_sectioncross_section

旁注:在这种情况下,您应该将您import的文件移到文件的开头以INPUT.py获得更好的样式。


推荐阅读