0

ちょっとした背景 - 私は pygame で遊んでいて、すべての Mob クラス インスタンスの位置の辞書を作成したいと考えています。

私の見立てでは:

human = Mob(pos)
mob_positions = {human : pos}

だから私が電話するたびに、私は辞書にaを追加しMob.__init__()たかった.posmob_positions

現在のインスタンス変数名にアクセスするにはどうすればよいですか? それとも、非常に間違ったアプローチですか?

4

3 に答える 3

2

を含むすべてのバインドされたメソッドは__init__、通常は という名前のパラメーターを少なくとも 1 つ受け取りますself。これはまさにあなたが説明しているものです。

class Mob(object):
    def __init__(self, pos):
        mob_positions[self] = pos
于 2012-08-11T13:32:06.480 に答える
2

問題を解決するにはいくつかの方法があります。それらの 1 つは、mob_positions 辞書を引数として __init__ に渡すことです。

class Mob(object):
    def __init__(self, pos, field=None):
        ...
        if field:
            field[self] = pos

このような表記法により、モブを初期化するかどうかを指定できます (モブで何をしているかによって異なります)。

于 2012-08-11T13:33:45.827 に答える
1

現在のインスタンス変数は、単に関数の最初の引数です。慣例により、 という名前が付けられselfます。

これが私が物事を行う方法です。

class Mob(object):
    def __init__(self, pos, mob_positions):
        self.pos = pos
        mob_positions[self] = pos
于 2012-08-11T13:32:22.300 に答える