Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的`type()``类`u`和`u基`u`之间有什么区别?_Python_Oop_Types - Fatal编程技术网

Python中的`type()``类`u`和`u基`u`之间有什么区别?

Python中的`type()``类`u`和`u基`u`之间有什么区别?,python,oop,types,Python,Oop,Types,我在Python的REPL中尝试了这一点: >>> class Foo: ... def f():{} ... >>> >>> type(Foo) <type 'classobj'> >>> Foo.__bases__ () >>> type(type(Foo)) <type 'type'> >>> type(Foo).__bases__ (<type

我在Python的REPL中尝试了这一点:

>>> class Foo:
...  def f():{}
... 
>>> 
>>> type(Foo)
<type 'classobj'>
>>> Foo.__bases__
()
>>> type(type(Foo))
<type 'type'>
>>> type(Foo).__bases__
(<type 'object'>,)
>>类Foo:
...  def():{}
... 
>>> 
>>>类型(Foo)
>>>Foo.\uuu基地__
()
>>>类型(类型(Foo))
>>>类型(Foo).\uu基__
(,)
然而,我仍然无法准确理解OOP中“数据类型”的含义

在Python中,我知道一个实例可以通过
\uuuu class\uuuu
获得它的类,一个类可以通过
\uuuu base\uuuu
获得它的父类。这似乎很容易理解

但是“类”的
类型
,或者
类型对象
,意味着什么呢?
类型对象的
类型
是什么意思?
类型对象
\uuuuuuuuuuuuuuuu基
是什么意思?Python中的
type
class
有什么区别


这看起来有点让我困惑。。有人对此有想法吗?

理解的关键是认识到python中的一切都是对象。而且,从技术上讲,
object
不是一个关键字,而是一个全局内置项

我强烈建议你阅读整篇文章。它讨论了很多元类,
type
与元类紧密相关

本质上,类的类型是元类。python中所有新样式的类都继承自
对象
,所有元类都继承自
类型
。这有点令人困惑,因为python中的
类型
全局用于两个不同的目的。它是一个元类和一个返回对象类型的函数


一个非常简单的想法是,元类创建类,就像类创建实例一样。

在python中,类是对象,即类是“与其他任何东西类似的东西” 以你为例,

class Foo():
    pass

x = Foo()

type(x)                     # Foo, x is a Foo
type(Foo)                   # type, Foo is a type
您定义的类不仅仅是一段代码。它是一个占用内存空间的对象

Foo == 1                    # Valid comparisson which evaluates to False
Bar = Foo                   # Assign new variable bar as Foo
是有效的操作

>>> type(type(Foo))
<type 'type'>
>>类型(类型(Foo))
类型是一种特殊的类()
它的对象是可以创建对象的类

您的代码被标记为
python-3.x
,但它看起来像
python-2.x
-
type(Foo)
在python 3+中返回
。这与这个问题没有直接关系,但很高兴知道