我有一个这样定义的类:
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__
没有任何运气。
编辑:我想避免使用 b's __dict__
,因为我还希望能够将字典作为参数传递,并可能在其他地方的 GameState 对象上使用 ** 。