在我的项目中,我正在研究以下代码:
我很难理解13号线的右边。它是什么意思?它是什么类型的语法?有什么文件我可以进一步研究吗?非常感谢
class LazyD(dict):
d_args = {}
def __setitem__(self, name, args):
self.d_args[name] = args # line 5
def __getitem__(self, name):
return get_d(*self.d_args[name]) # line 8
ds = LazyD()
for my_type in ["A", "B"]:
ds[my_type] = (my_type, var1, var2, var3) # line 13
执行此操作时:
因为
ds
是一个LazyD
,它的__setitem__()
将被调用。第一个参数是传递的索引,因此在本例中my_type
。Python将把它设置为的任何值(在本例中为tuple
(my_type, var1, var2, var3)
)作为第二个参数传递所以,它好像被调用了(
self
当然将是ds
):然后将该元组分配给
ds.d_args[my_type]
,以便以后可以调用它。但是这个类非常有趣,因为ds[my_type]
不会返回元组,相反,它会调用一些函数get_d()
,将扩展的元组作为参数如果要在
ds[my_type] = (my_type, var1, var2, var3)
行之后立即执行print(ds[my_type])
,它不会像预期的那样打印该元组的值,而是会打印get_d(my_type, var1, var2, var3)
的返回值因为这对我来说似乎是一个意外的结果,所以我不认为这是一个设计非常清晰的类——但它就是这样做的
相关问题 更多 >
编程相关推荐