私は次のように定義されたクラスを持っています:
class GameState:
def __init__(self, state=None):
if state is None:
self.fps = 60
self.speed = 1
self.bounciness = 0.9
self.current_level = None
self.next_frame_time = 0
self.init_time = 0
self.real_time = 0
self.game_time = 0
self.game_events = []
self.real_events = []
else:
# THIS being the key line:
self.__dict__.update(**state)
これが機能するように(つまり、**演算子が私のクラスで機能するように)定義できるインターフェイスはありますか?
>>> a = GameState()
>>> b = GameState(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: update() argument after ** must be a mapping, not GameState
b
基本的に、私はのすべての属性を引き受けたいと思いますa
。
うまくいくとは思いませんでしたが__getitem__
、運が悪かったので定義してみました。
編集__dict__
:引数として辞書を渡すこともできるようにしたいので、bの使用を避けたいと思います。また、他の場所のGameStateオブジェクトで**を使用する可能性があります。