ちょっとした背景 - 私は pygame で遊んでいて、すべての Mob クラス インスタンスの位置の辞書を作成したいと考えています。
私の見立てでは:
human = Mob(pos)
mob_positions = {human : pos}
だから私が電話するたびに、私は辞書にaを追加しMob.__init__()
たかった.pos
mob_positions
現在のインスタンス変数名にアクセスするにはどうすればよいですか? それとも、非常に間違ったアプローチですか?
ちょっとした背景 - 私は pygame で遊んでいて、すべての Mob クラス インスタンスの位置の辞書を作成したいと考えています。
私の見立てでは:
human = Mob(pos)
mob_positions = {human : pos}
だから私が電話するたびに、私は辞書にaを追加しMob.__init__()
たかった.pos
mob_positions
現在のインスタンス変数名にアクセスするにはどうすればよいですか? それとも、非常に間違ったアプローチですか?
を含むすべてのバインドされたメソッドは__init__
、通常は という名前のパラメーターを少なくとも 1 つ受け取りますself
。これはまさにあなたが説明しているものです。
class Mob(object):
def __init__(self, pos):
mob_positions[self] = pos
問題を解決するにはいくつかの方法があります。それらの 1 つは、mob_positions 辞書を引数として __init__ に渡すことです。
class Mob(object):
def __init__(self, pos, field=None):
...
if field:
field[self] = pos
このような表記法により、モブを初期化するかどうかを指定できます (モブで何をしているかによって異なります)。
現在のインスタンス変数は、単に関数の最初の引数です。慣例により、 という名前が付けられself
ます。
これが私が物事を行う方法です。
class Mob(object):
def __init__(self, pos, mob_positions):
self.pos = pos
mob_positions[self] = pos