我正在尝试为Skype开发一个机器人,我遇到某些类的困难以及如何只使用一个实例而不是在另一个文件中创建一个新实例。
我有很多文件在其中运行机器人,我想只通过Global.py
文件使用一个实例:
from classes import class_Core
from classes import class_Skype
from classes import class_Message
from classes import class_Commands
global Core, Skype, Message, Commands
Core = class_Core.Core()
Skype = class_Skype.Skype()
Message = class_Message.Message()
Commands = class_Commands.Commands()
我还有一个Skypebot.py
文件,用于导入Global.py
文件:
import Global
但是,当我在Skype课程中运行Skypebot.py
并使用Core中的函数时:
class Skype:
def __init__(self):
Core.Log("Initialising Skype!")
我回过头来看看:
Traceback (most recent call last):
File "C:\Users\Connor\Desktop\Skypebot 0.4\Skypebot.py", line 1, in <module>
import Global
File "C:\Users\Connor\Desktop\Skypebot 0.4\Global.py", line 9, in <module>
Skype = class_Skype.Skype()
File "C:\Users\Connor\Desktop\Skypebot 0.4\classes\class_Skype.py", line 8, in
__init__
Core.Log("Initialising Skype!")
NameError: global name 'Core' is not defined
有人可以帮我这个吗?谢谢!
答案 0 :(得分:0)
您希望在skypebot.py中使用此功能,而不是import Global
:
from Global import Core
您也不需要global Core, Skype, Message, Commands
行,因为这些变量已经在Global.py中的全局范围内声明,正如doukremt所提到的那样。如果您希望以函数或方法访问/修改全局变量实例,则将使用“global”关键字,例如
var = 3
def some_func():
var = 2 # This creates a locally-scoped variable named var, and assigns it to 2.
def some_other_func():
global var
var = 2 # This sets the globally-scoped variable var to 2.