Python 3.x 为什么我能';t调用对象';在这种情况下是谁的班级成员?
此代码在开始时运行Python 3.x 为什么我能';t调用对象';在这种情况下是谁的班级成员?,python-3.x,Python 3.x,此代码在开始时运行 from Controller.DiscordClient import DiscordClient if __name__ == '__main__': try: DiscordClient.getInstance().run(DiscordClient.TOKEN) except Exception as ex: print(ex) 我有一个DiscordClient类: import discord from Con
from Controller.DiscordClient import DiscordClient
if __name__ == '__main__':
try:
DiscordClient.getInstance().run(DiscordClient.TOKEN)
except Exception as ex:
print(ex)
我有一个DiscordClient类:
import discord
from Controller.Startup_Manager import *
from Controller.Message_Manager import *
from Controller.User_Message_Handler import *
from Controller.ReactionHandler import *
class DiscordClient(discord.Client):
TOKEN = "token"
__instance = None
@staticmethod
def getInstance():
""" Static access method. """
if DiscordClient.__instance is None:
DiscordClient()
return DiscordClient.__instance
def __init__(self):
super().__init__()
Startup_Manager.initiate_startup()
""" Virtually private constructor. """
if DiscordClient.__instance is not None:
raise Exception("This class is a singleton!")
else:
DiscordClient.__instance = self
第二类:
from .DiscordClient import DiscordClient
from Controller.POTD import *
from Controller.Task_Manager import *
from Model.RegexParseConstants import *
import re
class Startup_Manager:
__TOO_MANY_REQUESTS_WAIT = 3 * 60
__WAIT_TIME_UPDATE_VERSION_SECS = 45 * 60
@staticmethod
def initiate_startup():
print(DiscordClient.TOKEN)
当我运行此代码并调用initiate\u startup()
时,它崩溃,导致以下错误:
name 'DiscordClient' is not defined
编辑:对整个场景的更新。我不知道为什么DiscordClient上的代码会崩溃,尽管它首先调用了Startup\u Manager。我怀疑您有一个
Controller.py
文件,其中包含DiscordClient
。因此,您的导入语句应该是Controller import*中的,或者具体地说是Controller import DiscordClient中的
问题在于循环导入,正如@syfluqs所建议的那样。根据这篇文章的说法,把它推迟到最后一刻是一个快速的解决办法:
这两个类在同一个文件中吗?不,它们不是。您是否正确地使用StartupManager
文件中的DiscordClient
导入了该文件?是的,当前设置为从Controller.DiscordClient import*有时Pycharm visual compiler会告诉我它未解析,通常它会说它没有解析。尽管已经导入了类。但不幸的是,控制器导入的*
不起作用。我也没有Controller.py,它只是目录的名称。@Newsonic请发布上述文件的内容和目录结构,我不清楚您的程序是如何运行的structured@Newsonic请把全部内容删去。完成了。我也注意到,除了initiate_startup()中的DiscordClient之外,还有其他静态成员调用work for all