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