“kwargs”如何隐式传递给变量?

Posted

技术标签:

【中文标题】“kwargs”如何隐式传递给变量?【英文标题】:How does "kwargs" is passed to a variable implicitly? 【发布时间】:2021-12-23 14:57:18 【问题描述】:

pytorch 教程中的一个简单代码,用于加载数据 ''' tr_data = datasets.FashionMNIST(root="data", train=True, download=True, transform=ToTensor()) '''

但是,当调试成如上所示的代码时。它使用“新”方法而不通过“kwds”。似乎从未使用过参数“transform=ToTensor()”,结果不正确。所以我想知道代码如何处理参数,否则将kwds读入变量。

【问题讨论】:

不要发布代码图片 【参考方案1】:

它正在检查超类的__new__ 方法是否与object 的方法相同。这可以通过两种方式发生:超类是object,或者超类没有覆盖__new__,并且没有任何it 超类回到object

object 在其构造函数中不接受任何参数,因此如果是这种情况,它不会传递它们。由于object 不带任何参数,它也不需要任何参数,因此超类调用正确地创建了对象。

__new__ 被调用后,__init__ 被调用。这就是实际初始化对象(而不是创建它)的原因。它需要对参数做一些事情,而且很可能会这样做。

【讨论】:

是的,调试后,后面跟着一个使用参数的“init”方法

以上是关于“kwargs”如何隐式传递给变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 kwargs 传递给 boost-python 包装函数?

如何将 kwargs 传递给 argparse

argparse - 如何使用 kwargs 或 argv 传递给方法

将args和kwargs传递给反向Django

我可以将 python **kwargs 从 sub 传递给父类吗?

*args 和 **kwargs