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