不,您不能重载该语法,但它们是您可以做的替代方法。
将普通字典转换为您的字典
my_dict( {'foo':bar, 'foo2':bar2} )
让你的函数接受key-args
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