访问函数Python中定义的变量

时间:2014-01-21 01:40:54

标签: 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)

在我的第一个文件中,我希望能够访问变量,以便在我的角色与之碰撞时调用函数。我正在阅读其他类似的问题,但没有一个答案似乎适用于我想要做的事情。

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)

然而它似乎没有用。

2 个答案:

答案 0 :(得分:1)

不确定我是否正确解释了您的问题,但为什么不回复变量?

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

并在variable中访问它:

variable = secondFile().create_something()

如果你希望它更像是OOP,你应该variable绑定自己:

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

然后,访问它:

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

答案 1 :(得分:0)

您的变量无法存储在函数中。函数内部的变量无法在外部访问。但是在函数内部可以访问外部的变量(例如在类中)。所以你想要的是self.variable

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

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