Python中的x.type和type(x)有什么区别?

Ujj*_*yan 3 python theano

请考虑以下几行

import theano.tensor as T 

x = T.dscalar('x')
y = T.dscalar('y')
z = x+y
Run Code Online (Sandbox Code Playgroud)

然后,

In [15]: type(x)
Out[15]: theano.tensor.var.TensorVariable
Run Code Online (Sandbox Code Playgroud)

而,

In [16]: x.type
Out[16]: TensorType(float64, scalar)
Run Code Online (Sandbox Code Playgroud)

为什么type(x)和x.type提供两个不同的信息?他们传达了什么信息?

我也看到了提到Theano教程,

>>> type(x)
<class 'theano.tensor.basic.TensorVariable'>
>>> x.type
TensorType(float64, scalar)
Run Code Online (Sandbox Code Playgroud)

为什么类型(x)输出在我的情况下是不同的?这些是由版本特定的实现差异引起的,这是由这种差异所表示的吗?

mud*_*ish 8

type(x) 是一个内置的.

x.type 是在对象中定义的属性.

它们是完全独立的,type(x)返回什么类型的对象x,并x.type做任何对象想要它.在这种情况下,它返回有关对象类型的一些信息


Cor*_*mer 5

theano.tensortype当你说时,你有一个属性

x.type
Run Code Online (Sandbox Code Playgroud)

dtype与许多对象携带的numpy对象属性类似(如果您熟悉该库).

另一方面type是一个Python函数,它查看传入的对象的实际类型,type(x)实际上是一个

theano.tensor.var.TensorVariable
Run Code Online (Sandbox Code Playgroud)

总而言之,您将属性与实际对象类型进行比较.