0

私はPythonに少し慣れていないので、辞書で本当に奇妙な問題にぶつかりました。それは私には理解できないようです。

基本的に、辞書を持つWorldというクラスがあります。問題は、Worldのメソッドを使用してIslandクラスself.islands = {}のインスタンスを追加したいときに、エラーが発生することです。addIsland(island)

AttributeError:ワールドインスタンスに属性'islands'がありません

ライン上:

self.islands[island.name] = island

self.islandsは、Worldで次のように初期化するため、確実に存在__init__します。

class World():
    def __init__(showBase, self):        
        self.islands = {}
        ...

addIslandメソッドは次のとおりです。

def addIsland(self, island):
    island.setWorld(self)
    self.islands[island.name] = island

そして、そのメソッドは、基本クラス__init__(メインが実行される)から次のように呼び出されます。

self.world = World(self)
self.setupIslands()

self.setupIslands()は次のようになります。

def setupIslands(self):
    #Island 1
    island1 = IslandCross()
    self.world.addIsland(island1)

少し紛らわしい場合は申し訳ありませんが、基本的に3つのクラスがあり、ベースにはメインがあり、それはthen__init__を呼び出します。self.world = World(self)self.setupIslands()

World's には、島の名前()としてキーを使用して辞書にを追加しようとする__init__self.islands = {}とメソッドがあり、島のインスタンス自体としての値です。addIsland()island.name

私はここで何が間違っているのですか?この種のセットアップは、プロジェクトの他の場所でも機能していると確信しています。

私はそれが愚かで単純なものだと思いますね:)

御時間ありがとうございます、

InfinitiFizz

4

1 に答える 1

2

自己参照は、メソッドへの最初の引数です。

def __init__(self, showBase):
于 2012-08-19T01:23:28.713 に答える