2

私はPython(アプリエンジンに使用)に悩まされています。私はそれにかなり慣れていませんが(Javaに慣れています)、今まで楽しんでいました。

以下は動作しません!

class SomeClass(db.Model):
  item = db.ReferenceProperty(AnotherClass)

class AnotherClass(db.Model):
  otherItem = db.ReferenceProperty(SomeClass)

私の知る限り、これを機能させる方法はないようです。これがばかげた質問ならごめんなさい。うまくいけば、それが事実なら、私は迅速な答えを得るでしょう。

前もって感謝します。

4

2 に答える 2

6

Pythonで「class」キーワードを表示する1つの方法は、スクリプトの最初の実行中に新しい名前付きスコープを作成することです。したがって、コードはNameErrorをスローします。Pythonが行を実行するときにまだ行を実行していないため、 name'AnotherClass'は定義されていない例外です。class AnotherClass(db.Model):self.item = db.ReferenceProperty(AnotherClass)

これを修正する最も簡単な方法は、これらの値の初期化をクラスの__init__メソッド(コンストラクターのPython名)に移動することです。

class SomeClass(db.Model):
  def __init__(self):
    self.item = db.ReferenceProperty(AnotherClass)

class AnotherClass(db.Model):
  def __init__(self):
    self.otherItem = db.ReferenceProperty(SomeClass)
于 2009-11-12T18:35:36.230 に答える
1

各クラスが他のクラスを参照したいために機能しない場合は、次のことを試してください。

class SomeClass(db.Model):
  item = None

class AnotherClass(db.Model):
  otherItem = db.ReferenceProperty(SomeClass)

SomeClass.item = db.ReferenceProperty(AnotherClass)

メタクラスの魔法があれば、それはいくつかのメタクラスの魔法と衝突します...しかし試してみる価値はあります。

于 2009-11-12T18:26:08.090 に答える