Python 3内置类型之间有什么关系?

时间:2015-07-27 11:21:56

标签: python

在python 3中,一切都是对象。我画了一个关于类关系的图表。这个图表是否正确?

enter image description here

困难的部分是关于类型和对象类。他们有什么关系? type是一个对象?或对象是一种类型?

>>> x=type
>>> type(x)
<class 'type'>
>>> x=object
>>> type(x)
<class 'type'>

2 个答案:

答案 0 :(得分:3)

据我所知,类关系在Python 3中有点像这样:

  • 每个班级都是object
  • 子类
  • 每个班级都是type
  • 实例

每个类都由type类或其他元类创建,该元类派生自type。因此,每个类都是type的实例(包括type!)每个类都会为True返回isinstance(cls, type)

在Python 3中,每个类也是object的子类。每个班级或实例都会为True

返回isinstance(cls_or_instance, object)

特殊情况是元类。元类派生自type,因此每个元类将返回True issubclass(metaclass, type)isinstance(metaclass, type)

答案 1 :(得分:0)

类型对象本身就是一个对象。请注意,虽然python的继承模型与其他OO语言不同,但大部分依赖于duck typing而不是继承。

请注意type(x)返回对象的类型,type(object)返回<class 'type'>仅表示object的类型(所有对象都具有的类型)是type(所有类型的类型),type本身是一种类型,因此它的类型再次为type