我使用pytorch定义一个变量x,计算并得到它的渐变x.grad,这意味着grad是实例x的一个属性。但是,我可以使用x.grad.data.zero_()将x.grad设置为零,这意味着data.zero_()是x.grad的方法。为什么属性有方法?非常感谢。
答案 0 :(得分:0)
因为属性x.grad
是一个对象,并且在大多数动态语言中,大多数都是一个对象。
答案 1 :(得分:0)
它只是一个对象属性,例如我们可以有一个String类型的属性。而我们现在所有的String都有自己的方法,包括打印出自身价值的方法
答案 2 :(得分:0)
即使在具有不同标量和对象类型(如Java或C ++)的语言中,属性也可以是对象(希望OO不会给你带来太大的收益),所以没有错,出乎意料或者令人惊讶拥有具有方法的属性。
说到Python,没有标量类型,一切都是对象(实际上是一切,包括模块,类,方法和函数),你用方法找到一个属性就不足为奇了