Не удается решить Python ImportError: невозможно импортировать имя 'FirstNews' - PullRequest
0 голосов
/ 16 июня 2019

В настоящее время я делаю свой собственный проект с Python, используя класс наследования, если я выбираю меню из класса A, родительский класс, затем перехожу к классу B, дочернему классу, а также если я выбираю меню из класса B, дочернего класса,Я хотел бы перейти в класс А. Как решить эту проблему?

Я пытался создать эти файлы с помощью Python Decorator, но Decorator может использовать один файл.поэтому я попытался использовать наследование Python для свободного перемещения между классом A и классом B, но безрезультатно.

это 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

    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

     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)

И произошли ошибки.Трассировка (последний вызов был последним): файл "E: /Python_Class/Web_Crawling_and_ChatBot_1/NaverNews/Main/Main.py", строка 12, из файла FirstNews, импортируйте файл FirstNews "E: \ Python_Class \ Web_Crawling_and_ChatBot_1 \ Main \ News \ News \ News \ News.py ", строка 3, из главного файла импорта NaverNews" E: \ Python_Class \ Web_Crawling_and_ChatBot_1 \ NaverNews \ Main \ Main.py ", строка 12, из импорта FirstNews FirstNews ImportError: невозможно импортировать имя 'FirstNews'

1 Ответ

0 голосов
/ 16 июня 2019

Ваш FirstNews.py файл находится в подпапке News

В Main файле попробуйте

from News.FirstNews import FirstNews

РЕДАКТИРОВАТЬ: я понимаю, что ваши модули импортируют друг друга. Это немного странно для меня, так как отладчик не может понять, какой файл является основным. И он застрянет в цикле импорта модуля. Вам следует подумать об изменении структуры кода.

...