访问Python函数中定义的变量

访问Python函数中定义的变量,python,function,variables,python-2.7,panda3d,Python,Function,Variables,Python 2.7,Panda3d,我正在从事一个项目,我正在运行Python 2.7和Panda3D v1.8.1。我无法找到如何访问函数中定义的变量。对于设置,我有两个文件。一个文件管理事件,第二个文件加载模型。以下是我的一个例子: class secondFile(object): def create_something(self): variable = loader.loadModel('myModel.bam') variable.setPos(123,1231,5) 在

我正在从事一个项目,我正在运行Python 2.7和Panda3D v1.8.1。我无法找到如何访问函数中定义的变量。对于设置,我有两个文件。一个文件管理事件,第二个文件加载模型。以下是我的一个例子:

class secondFile(object):

    def create_something(self):

        variable = loader.loadModel('myModel.bam')
        variable.setPos(123,1231,5)
在我的第一个文件中,我希望能够访问变量,以便在角色与它发生冲突时调用函数。我在读其他类似的问题,但没有一个答案对我想做的事情有效

DO = DirectObject()

def collideEventIn():
    print "Collision"

collisionHandler.addInPattern('%fn-into-%in')
DO.accept('character-into-variable', collideEventIn)
我试过这个:

class secondFile(object):

    def create_something(self):

        create_something.variable = loader.loadModel('myModel.bam')
        create_something.variable.setPos(123,1231,5)
主文件:

DO = DirectObject()

variable = secondFile().create_something.variable

def collideEventIn():
    print "Collision"

collisionHandler.addInPattern('%fn-into-%in')
DO.accept('character-into-variable', collideEventIn)

但是它似乎不起作用。

不确定我是否正确解释了你的问题,但你为什么不直接返回变量呢

def create_something(self):
    variable = loader.loadModel('myModel.bam')
    variable.setPos(123,1231,5)
    return variable
并在
变量中访问它:

variable = secondFile().create_something()
如果希望它更像OOP,则应将
variable
绑定到self:

def create_something(self):
    self.variable = loader.loadModel('myModel.bam')
    self.variable.setPos(123,1231,5)
然后,要访问它:

SF = secondFile()
SF.create_something()
variable = SF.variable

您的变量不能存储在函数中。函数内部的变量在函数外部是不可访问的。但是外部变量(例如类中的变量)可以在函数内部访问。因此,您需要的是
self.variable

def create_something(self):
    self.variable = loader.loadModel('myModel.bam')
    self.variable.setPos(123,1231,5)

然后类中的任何其他函数,或引用实例的任何代码,都可以通过
self.variable
thesecondfile.variable
(假设
thesecondfile=secondFile()
)访问它。

谢谢,这正是我要找的。