我試圖讓Python中的dict
般類。覆蓋字典()上
當你犯了一個類,你有一定的方法,告訴Python中如何做一個內置類。例如,覆蓋__int__
方法告訴Python中,如果用戶在類的一個實例使用int()
什麼返回。與__float__
相同。你甚至可以控制Python的將被重寫__iter__
方法(這可以幫助的Python使list
S和tuple
是你的類的)使類的迭代對象。我的問題是你如何告訴Python如何使你的自定義類的dict
?沒有特別的__dict__
方法,那麼你怎麼去做呢?我想類似如下:
class Foo():
def __dict__(self):
return {
'this': 'is',
'a': 'dict'
}
foo = Foo()
dict(foo) # would return {'this': 'is', 'a': 'dict'}
我試着從dict
製作類繼承,但它因爲子類試圖從dict
和type
繼承的代碼後引發錯誤,從dict
ISN所以繼承沒有可能性。有沒有其他方法可以做到這一點?
而且,我已經覆蓋了__iter__
方法已經以便它會返回一個dict_keyiterator
對象(被退回什麼,當你對一個dict
使用iter()
),但它似乎仍然沒有工作應該如何。
你試過從'collections.abc繼承* Mapping'了嗎? –
'collections.abc.Mapping'是一類'ABCMeta'。我的很多代碼已經建立在'type'元類的基礎上,所以很多代碼與'ABCMeta'不兼容。我可以通過我的所有代碼試圖改變它'ABCMeta'工作,但我只是希望有可能是不依賴於像'Mapping'一個抽象類的簡單方法。 – ChristianFigueroa
只需在您的類中添加一個'@ staticmethod',並將其命名爲'to_dict',您可以明確地將其命名爲字典。即'result = foo_obj.to_dict()'。 – martineau