Python中的`type()``类`u`和`u基`u`之间有什么区别?
我在Python的REPL中尝试了这一点: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
>>> 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+中返回
。这与这个问题没有直接关系,但很高兴知道