0

これはばかげた質問かもしれませんが、とにかく質問します。クリーチャーファイルとシミュレーションファイルがあり、それぞれに同じ名前のクラスが含まれています。Simulationクラスのinitで、2つのCreatureオブジェクトを初期化する必要があります。クリーチャーファイルをインポートしましたが、creature.Creature()を試してみると

Traceback (most recent call last):
  File "/Users/lego90511/Documents/workspace/creatureSim/simulation.py", line 2, in <module>
    import creature
  File "/Users/lego90511/Documents/workspace/creatureSim/creature.py", line 3, in <module>
    import simulation
  File "/Users/lego90511/Documents/workspace/creatureSim/simulation.py", line 86, in <module>
    sim = Simulation(5)        
  File "/Users/lego90511/Documents/workspace/creatureSim/simulation.py", line 6, in __init__
    self.creatures = {creature.Creature(4, 4, 3, 4, 4, 3, 10):"", creature.Creature(4, 4, 3, 4, 4, 3, 10):"", }
AttributeError: 'module' object has no attribute 'Creature'"

私は何が間違っているのですか?

関連するコードは次のとおりです。

シミュレーション:

import creature
from random import randint
class Simulation():
    def __init__(self, x):
        self.creatures = {creature.Creature():"", creature.Creature():"", }
        ...

生き物:

class Creature:
    def __init__(self, social, intelligence, sensory, speed, bravery, strength, size):
        self.traits = [social, intelligence, sensory, speed, bravery, strength]
        ...
4

1 に答える 1

2

循環依存があります。creatureはインポートsimulation中ですが、インポートしようとしてcreatureいるため、失敗します。循環性を取り除くには、ファイルを別の方法で構造化する必要があります。両方のクラスを1つのファイルに入れるか、1つのインポートを関数内に移動します。

于 2013-03-24T18:43:07.890 に答える