2014-01-21 72 views
1

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

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) 

但是它没有似乎工作。

回答

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 
+0

感谢访问它,这只是我是什么寻找。 – Chandler

0

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

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

然后在类的其他功能,或引用实例的任何代码,可以通过self.variablethesecondfile.variable(假设thesecondfile = secondFile()