1

私はプロジェクトに取り組んでおり、Python 2.7 と Panda3D v1.8.1 を実行しています。関数で定義された変数にアクセスする方法を見つけることができませんでした。セットアップには、2 つのファイルがあります。1 つのファイルでイベントを管理し、2 つ目のファイルでモデルをロードします。これが私が持っているものの例です:

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.variableまたはthesecondfile.variable( と仮定thesecondfile = secondFile())によってアクセスできます。

于 2014-01-21T01:44:39.663 に答える