1

我正在做一个项目,我正在运行 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)

然而,它似乎没有工作。

4

2 回答 2

1

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

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

并访问它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
于 2014-01-21T01:43:25.227 回答
0

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

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

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

于 2014-01-21T01:44:39.663 回答