为什么一个属性有一个方法?

Why does an attribute has a method?

我用pytorch定义了一个变量x,计算得到它的梯度x.grad,也就是说梯度是实例x的一个属性。但是,我可以使用 x.grad.data.zero_() 将 x.grad 设置为零,这意味着 data.zero_() 是 x.grad 的方法。为什么一个属性有一个方法?非常感谢。

因为属性 x.grad 是一个对象,在大多数动态语言中,几乎所有东西都是对象。

它只是一个对象属性,例如我们可以有一个字符串类型的属性。而我们现在String都有了自己的方法包括打印出自身值的方法

即使在具有不同标量和对象类型的语言中(如 Java 或 C++),属性也可以是对象(希望 OO 不会给你带来太多好处),所以在具有具有方法的属性。

当涉及到 Python 时,没有标量类型,一切都是对象(实际上一切都是对象,包括模块、类、方法和函数),你发现一个带有一种方法。