在不创建新实例的情况下,在另一个类中使用其他类函数

时间:2014-04-03 19:29:32

标签: python python-2.7

我正在尝试为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

有人可以帮我这个吗?谢谢!

1 个答案:

答案 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.