在python 3中,一切都是对象。我画了一个关于类关系的图表。这个图表是否正确?
困难的部分是关于类型和对象类。他们有什么关系? type是一个对象?或对象是一种类型?
>>> x=type
>>> type(x)
<class 'type'>
>>> x=object
>>> type(x)
<class 'type'>
答案 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
。