属性player1
,player2
、およびQ
のクラスGame
があるとします。 player1
とplayer2
は、それ自体がというクラスのインスタンスであり、属性もQ
となっています。私はGame
をインスタンス化するときにQ
をPlayer
のインスタンスと共有するようにしたいと思います。このコードを検討し、私が何を意味するか説明するためにPythonで異なるクラス間でインスタンス変数を共有する方法
:
class Game:
def __init__(self, player1, player2):
self.player1 = player1
self.player2 = player2
self.Q = {}
class Player:
def __init__(self, mark):
self.mark = mark
self.Q = {}
player1 = Player(mark="X")
player2 = Player(mark="O")
game = Game(player1, player2) # Instantiate a game with player 1 and player 2
game.Q["some key"] = "some value"
# I would like this to happen automatically
player1.Q = game.Q
player2.Q = game.Q
私はそれを変更するたびにplayer1
とplayer2
のQ
変数はgame.Q
に自動的に更新されますしたいと思います。どうすればこれを達成できますか?
'self.Q = self.player1.Q = self.player2.Q = {}'はコンストラクタ内で完了です。 –
@Rawing:あなたはそれを完全な答えとして書くこともできます。 –
qの内容はやや曖昧ですが、よく構成された解決策では、メンバー変数を複製する代わりに、プレイヤーインスタンスがゲームへの参照を受け取るようにしてください。 – guidot