簡體   English   中英

無法解決 Python ImportError: cannot import name 'FirstNews'

[英]Cannot solve Python ImportError: cannot import name 'FirstNews'

我目前正在使用繼承類使用 Python 制作我自己的項目,如果我從 A 類,父類中選擇菜單,然后移動到 B 類,子類,如果我從 B 類,子類中選擇菜單,我會喜歡轉A班,這個問題怎么解決?

我嘗試用 Python Decorator 制作這些文件,但 Decorator 只能使用一個文件。 所以我嘗試使用 Python 繼承在 A 類和 B 類之間自由移動,但無濟於事。

主要.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

第一新聞.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

默認.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

編輯:我意識到你的模塊相互導入。 這對我來說有點奇怪,因為調試器會混淆哪個是主文件。 並且會卡在導入模塊的循環中。 您應該考慮更改代碼結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM