いいえ、その構文をオーバーロードすることはできませんが、それらは実行できる代替手段です。
通常の辞書を自分の辞書に変換する
my_dict( {'foo':bar, 'foo2':bar2} )
関数にキー引数を受け入れさせる
my_dict( foo='bar', foo2='bar2' )
この辞書用に独自の構文を作成してください。これは python のオーバーロード可能な演算子を悪用しており、少し複雑です。my_dict<'foo' で始まる連鎖反応です。演算子をオーバーロードして、別の 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