你如何重写拆包语法的结果*obj和**obj?
例如,你能以某种方式创建一个thing行为如下的对象:
>>> [*thing]
['a', 'b', 'c']
>>> [x for x in thing]
['d', 'e', 'f']
>>> {**thing}
{'hello world': 'I am a potato!!'}
Run Code Online (Sandbox Code Playgroud)
注意:迭代通过__iter__("for x in thing")返回*splat unpack中的不同元素.
我一看operator.mul和operator.pow,但这些功能只关心用途有两个操作数,如a*b和a**b,而且似乎无关的图示操作.
我正在使用python-spidermonkey,它在内部使用PyMapping_Check来识别被用作全局的对象(在rt.new_context(全局)中)是否实现了映射协议.(这基本上是传递给python-spidermonkey的字典,因此javascript对python变量的访问权限有限.)
我在Python中找不到映射协议的官方定义,所以我一直在使用反复试验来确定其中的内容.有官方参考吗?