Cannot solve Python ImportError: cannot import name 'FirstNews'

Cannot solve Python ImportError: cannot import name 'FirstNews'

我目前正在使用 Python 使用继承 Class 创建自己的项目,如果我从 Class A select 菜单,Parents Class,然后移动到 Class B,Child Class,如果我从 Class B,Child [=] select 菜单34=],我想搬到Class A. 这个问题怎么解决?

我尝试用 Python Decorator 制作这些文件,但是 Decorator 只能使用一个文件。所以我尝试使用 Python 继承来在 Class A 和 Class B 之间自由移动,但无济于事。

Main.py:

    # this is the Main.py
    from FirstNews import FirstNews
    from Default import Default

    import datetime
    import random

    random.seed(datetime.datetime.now())

    class NaverNews:
        def __init__(self, news_lists):
        self.FirstNewsSite = news_lists
        self.Default = news_lists

        def __call__(self):
            print("Select the News site that you want to read")
            menu_input = input("Selection Menu")
            menu_list = []
            while 1:
                if menu_input is 1:
                    self.FirstNewsSite()
                    menu_list.append(FirstNews)

                else:
                    self.Default()
                    menu_list.append(Default)
                    break

FirstNews.py:

    # This is the FirstNews.py
    import sys

    from Main import NaverNews
    from Default import Default

    sys.path.append('/NaverNews/Main/Main')


    # noinspection PyCallByClass
    class FirstNews(NaverNews):
    def __init__(self, my_choice):
        NaverNews.__init__(self, my_choice)
        self.myFirstChoice = my_choice
        self.mySecondChoce = my_choice
        self.myBackMenu = my_choice
        self.myDefault = my_choice

    def __call__(self):
        print("Select the News Company that you want to read")
        FirstInput = input()
        FirstList = []

        while 1:
            if FirstInput is 1:
                self.myFirstChoice()
                FirstList.append(NaverNews)
                # print("실행")

            elif FirstInput is 2:
                print("Going Back to Main.py")
                self.myBackMenu()
                FirstList.append(NaverNews)

            else:
                self.Default()
                FirstList.append(Default)
                break

Default.py:

    # This is the Default.py
    import sys

    from Main import NaverNews

    sys.path.append('/NaverNews/Main/Main')


    class Default(NaverNews):
        def __init__(self, myDefaultMenu):
            NaverNews.__init__(self, myDefaultMenu)
            self.myDefaultMenu = myDefaultMenu

        def __call__(self):
            print("You chose the wrong button\n Would you like to choose again? [Y / N]")
            DefaultInput = input()
            DefaultList = []

            if DefaultInput is 'y' or 'Y':
                self.myDefaultMenu()
                DefaultList.append(NaverNews)

            else:
                print("Shut down the program")
                exit(0)

并且发生了错误。

Traceback (most recent call last):
  File "E:/Python_Class/Web_Crawling_and_ChatBot_1/NaverNews/Main/Main.py", line 12, in <module>
    from FirstNews import FirstNews
  File "E:\Python_Class\Web_Crawling_and_ChatBot_1\NaverNews\Main\News\FirstNews.py", line 3, in <module>
    from Main import NaverNews
  File "E:\Python_Class\Web_Crawling_and_ChatBot_1\NaverNews\Main\Main.py", line 12, in <module>

    from FirstNews import FirstNews
ImportError: cannot import name 'FirstNews'

您的 FirstNews.py 文件位于子文件夹 News

Main文件中,尝试

from News.FirstNews import FirstNews

编辑:我知道你的模块相互导入。这对我来说有点奇怪,因为调试器会混淆哪个是主文件。并且会卡在导入模块的循环中。您应该考虑更改代码结构。