在解包赋值语句中,被赋值的对象能否检查它被赋值的变量数量?
class MyObject:
def __iter__(self):
n = some_diabolical_hack()
print(f"yielding {n} vals")
return iter(["potato"]*n)
就像是:
>>> x, y = MyObject()
yielding 2 vals
>>> a, b, c = MyObject()
yielding 3 vals
在更一般的情况下,它可以内省target_list分配中使用的“形状”吗?
>>> first, *blob, d[k], (x, y), L[3:7], obj.attr, last = MyObject()
unpacking to <_ast.Tuple object at 0xcafef00d>
示例潜在用例:MagicMock()当用于修补赋值语句右侧的某个对象时,不需要预先配置固定迭代长度的改进。
胡子哥哥
慕勒3428872
相关分类