Python 导入创建新对象的方法

Python 导入创建新对象的方法,python,Python,当导入方法包括创建新对象时,我有点困惑。这对我来说很难解释,因为我还在学习这门语言,但这里有一个例子说明了正在发生的事情 我有一个macrocalc.py from interface import Interface def main(): a = Interface(); print "Welcome!" print "!hat would you like to do?" a.display_options() if __name__ == "main"

当导入方法包括创建新对象时,我有点困惑。这对我来说很难解释,因为我还在学习这门语言,但这里有一个例子说明了正在发生的事情

我有一个
macrocalc.py

from interface import Interface

def main():
    a = Interface();
    print "Welcome!"
    print "!hat would you like to do?"
    a.display_options()

if __name__ == "main":
    main()
稍后,在我的代码中,我使用
从marcocalc import main
导入main。然后我运行
main()
方法。但我得到了一个错误:

  File "macrocalc.py", line 1, in <module>
    from interface import Interface
  File "/Users/username/Development/foodcalc/interface.py", line 1, in <module>
    from addFood import addfood
  File "/Users/username/Development/foodcalc/addFood.py", line 2, in <module>
    from macrocalc import main
  File "/Users/username/Development/foodcalc/macrocalc.py", line 1, in <module>
    from interface import Interface
ImportError: cannot import name Interface
我尝试从接口导入接口添加行
,但错误仍然存在


如果需要更多的代码。我将把它添加到帖子中。请让我知道

您引入了可怕的循环依赖

在宏计算.py中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
interface.py
中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
addFood.py
的第2行:

from macrocalc import main
但现在我们又回到了一个新的时代


你必须重构你的程序,这样它就不会这样做了。:)

您引入了可怕的循环依赖

在宏计算.py中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
interface.py
中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
addFood.py
的第2行:

from macrocalc import main
但现在我们又回到了一个新的时代


你必须重构你的程序,这样它就不会这样做了。:)

您引入了可怕的循环依赖

在宏计算.py中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
interface.py
中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
addFood.py
的第2行:

from macrocalc import main
但现在我们又回到了一个新的时代


你必须重构你的程序,这样它就不会这样做了。:)

您引入了可怕的循环依赖

在宏计算.py中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
interface.py
中的第1行:

# Call this A
from interface import Interface
from addFood import addfood
addFood.py
的第2行:

from macrocalc import main
但现在我们又回到了一个新的时代


你必须重构你的程序,这样它就不会这样做了。:)

您已经创建了一个导入循环:

File "macrocalc.py", line 1, in <module>
    from interface import Interface
  File "/Users/username/Development/foodcalc/interface.py", line 1, in <module>
    from addFood import addfood
  File "/Users/username/Development/foodcalc/addFood.py", line 2, in <module>
    from macrocalc import main
  File "/Users/username/Development/foodcalc/macrocalc.py", line 1, in <module>
    from interface import Interface
ImportError: cannot import name Interface
文件“macrocalc.py”,第1行,在
从接口导入接口
文件“/Users/username/Development/foodcalc/interface.py”,第1行,在
从addFood进口addFood
文件“/Users/username/Development/foodcalc/addFood.py”,第2行,在
从宏计算导入主
文件“/Users/username/Development/foodcalc/macrocalc.py”,第1行,在
从接口导入接口
ImportError:无法导入名称接口
看看如果没有错误,代码完全按照您编写的方式运行,会发生什么:

  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口
  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口

  • 您需要删除某个导入语句,以防止无限次的导入循环。

    您已经创建了一个导入循环:

    File "macrocalc.py", line 1, in <module>
        from interface import Interface
      File "/Users/username/Development/foodcalc/interface.py", line 1, in <module>
        from addFood import addfood
      File "/Users/username/Development/foodcalc/addFood.py", line 2, in <module>
        from macrocalc import main
      File "/Users/username/Development/foodcalc/macrocalc.py", line 1, in <module>
        from interface import Interface
    ImportError: cannot import name Interface
    
    文件“macrocalc.py”,第1行,在
    从接口导入接口
    文件“/Users/username/Development/foodcalc/interface.py”,第1行,在
    从addFood进口addFood
    文件“/Users/username/Development/foodcalc/addFood.py”,第2行,在
    从宏计算导入主
    文件“/Users/username/Development/foodcalc/macrocalc.py”,第1行,在
    从接口导入接口
    ImportError:无法导入名称接口
    
    看看如果没有错误,代码完全按照您编写的方式运行,会发生什么:

  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口
  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口

  • 您需要删除某个导入语句,以防止无限次的导入循环。

    您已经创建了一个导入循环:

    File "macrocalc.py", line 1, in <module>
        from interface import Interface
      File "/Users/username/Development/foodcalc/interface.py", line 1, in <module>
        from addFood import addfood
      File "/Users/username/Development/foodcalc/addFood.py", line 2, in <module>
        from macrocalc import main
      File "/Users/username/Development/foodcalc/macrocalc.py", line 1, in <module>
        from interface import Interface
    ImportError: cannot import name Interface
    
    文件“macrocalc.py”,第1行,在
    从接口导入接口
    文件“/Users/username/Development/foodcalc/interface.py”,第1行,在
    从addFood进口addFood
    文件“/Users/username/Development/foodcalc/addFood.py”,第2行,在
    从宏计算导入主
    文件“/Users/username/Development/foodcalc/macrocalc.py”,第1行,在
    从接口导入接口
    ImportError:无法导入名称接口
    
    看看如果没有错误,代码完全按照您编写的方式运行,会发生什么:

  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口
  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口

  • 您需要删除某个导入语句,以防止无限次的导入循环。

    您已经创建了一个导入循环:

    File "macrocalc.py", line 1, in <module>
        from interface import Interface
      File "/Users/username/Development/foodcalc/interface.py", line 1, in <module>
        from addFood import addfood
      File "/Users/username/Development/foodcalc/addFood.py", line 2, in <module>
        from macrocalc import main
      File "/Users/username/Development/foodcalc/macrocalc.py", line 1, in <module>
        from interface import Interface
    ImportError: cannot import name Interface
    
    文件“macrocalc.py”,第1行,在
    从接口导入接口
    文件“/Users/username/Development/foodcalc/interface.py”,第1行,在
    从addFood进口addFood
    文件“/Users/username/Development/foodcalc/addFood.py”,第2行,在
    从宏计算导入主
    文件“/Users/username/Development/foodcalc/macrocalc.py”,第1行,在
    从接口导入接口
    ImportError:无法导入名称接口
    
    看看如果没有错误,代码完全按照您编写的方式运行,会发生什么:

  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口
  • 食物的接口
  • 添加食品进口宏钙
  • 宏计算导入接口

  • 您需要删除某个导入语句,以防止无限循环的导入。

    文件系统怎么样?(提示,在根目录下使用“$tree”命令)文件系统如何?(提示,在根目录下使用“$tree”命令)文件系统如何?(提示,在根目录下使用“$tree”命令)文件系统如何?(提示,在根目录上使用“$tree”命令)您建议我如何解决这个问题?我的一般建议是:重构。具体来说,如果不更加熟悉您的代码,就很难进行评论。乍一看,只看到我能看到的,我可能会将
    interface.py
    合并到