我有一個類定義,像這樣:讓班級充當字典嗎?
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的__dict__
,因爲我想也能夠通過一本字典作爲參數,並有可能使用**在遊戲狀態對象的其他地方。
完美,這就是我一直在尋找! :) – Darthfett