Python - 数据模型 - 子类与实例

ove*_*nge 4 python python-2.7 python-3.x

对于用户定义的类型X,

>>> class X(object):
...     pass
... 
>>> issubclass(X, object)    # User-defined type
True
>>> isinstance(X, object)    # User-defined type
True
Run Code Online (Sandbox Code Playgroud)

问)如何X表现为子类和实例object


>>> issubclass(int, object)  # Built-in type
True
>>> isinstance(int, object)  # Built-in type
True
Run Code Online (Sandbox Code Playgroud)

Q)如何int表现为子类和实例object


>>> issubclass(type, object)  # Meta class
True
>>> isinstance(type, object)  # Meta class
True
Run Code Online (Sandbox Code Playgroud)

问)如何type兼顾子类和实例object


>>> issubclass(object, type)
False
>>> isinstance(object, type)
True
Run Code Online (Sandbox Code Playgroud)

object不是子类,而是实例type,这是有道理的

>>> issubclass(int, type)
False
>>> isinstance(int, type)
True
>>> 
Run Code Online (Sandbox Code Playgroud)

int不是子类,而是实例type,是有道理的.

>>> issubclass(X, type)      # User-defined type
False
>>> isinstance(X, type)      # User-defined type
True
Run Code Online (Sandbox Code Playgroud)

也有道理.

编辑:

这里说,引入新式类的主要动机是提供具有完整元模型的统一对象模型.

Q)如何理解统一对象模型的含义?

问)什么是元模型

问)type实例是type什么意思?

acd*_*cdr 5

你的所有三个问题都归结为"X如何成为子类和实例object".答案很简单:一切都是它的子类object.类是对象(=实例object),因此,子类(包括子类object)也是实例object.