不,你不能超載是語法,但他們是另類的事情可以做。
將普通的字典到你的字典
my_dict({'foo':bar, 'foo2':bar2})
讓你的函數接受key-args
my_dict(foo='bar', foo2='bar2')
彌補自己的語法本字典。 這是濫用Python的重載操作,是一個有點複雜的事情。 其連鎖反應,從my_dict <「富」。 重載運算符,以便輸出另一個my_dict對象,並重復該過程,每次保留每個值的記錄,直到最終到達最終對象。 然後計算並吐出了你自己的對象的對象。
my_dict<'foo'|bar,'foo2'|'bar2'>end
編輯:
我不知道你想這樣做的原因,但是這可能是一個備選答案,你的問題。您可能還想看看內置函數vars。這可以讓你得到一個對象具有的每個屬性的字典。如果對象更改,字典會自動更改。
class dict_obj(object):
def __init__(self, obj):
self.obj = obj
self.dict = vars(obj)
def __getattr__(self, value):
return self.dict[value]
__getitem__ = __getattr__
,你可以使用它像這樣
>>> class test:
def __init__(self):
self.value = 5
>>> obj = dict_obj(test())
>>> obj.value
5
>>> obj['value']
5
來源
2012-10-19 03:27:42
QxQ
不回答具體問題,但我認爲你正在做已經在標準庫!看看'argparse.Namespace' – wim