对于用户定义的类型X,
>>> class X(object):
... pass
...
>>> issubclass(X, object) # User-defined type
True
>>> isinstance(X, object) # User-defined type
TrueQ) X是如何作为object的子类和实例的
>>> issubclass(int, object) # Built-in type
True
>>> isinstance(int, object) # Built-in type
TrueQ) int作为object的子类和实例的行为方式
>>> issubclass(type, object) # Meta class
True
>>> isinstance(type, object) # Meta class
TrueQ) type如何既可以是object的子类,也可以是object的实例
>>> issubclass(object, type)
False
>>> isinstance(object, type)
Trueobject不是子类,而是type的实例,这很有意义。
>>> issubclass(int, type)
False
>>> isinstance(int, type)
True
>>> int不是子类,而是type的实例,这是有意义的。
>>> issubclass(X, type) # User-defined type
False
>>> isinstance(X, type) # User-defined type
True也说得通。
编辑:
这里说,引入新样式类的主要动机是提供一个具有完整元模型的统一对象模型。
Q)如何理解统一对象模型的含义?
Q)什么是元模型?
Q)说,type的type实例意味着什么?
发布于 2017-06-02 12:55:00
您的所有三个问题都归结为“X如何同时成为object的子类和实例”。答案很简单:一切都是object的子类。类是对象(=object的实例),因此子类(包括object的子类)也是object的实例。
发布于 2017-06-02 13:05:29
Python中的所有东西都是一个对象,而isinstance(whatever, object) == True只是一种表达方式。因此,通过设计,常规对象和任何类型都是对象的实例。有些类继承对象以提供附加功能(在Py3k中所有这些都是这样),例如,type是object的一个子类,它作为实例生成另一种类型,例如,Int是为实例化整数量身定制的type (和object)的子类。因此,您可能会问-为什么有一个python对象object,为什么这甚至是您可以传递的东西等等。答案是- mro,伙计。事实证明,类型object提供了一组方便的描述符,这些描述符作为大量其他类型的缺省值被调用(因为类型最终从object继承了大部分功能)。
https://stackoverflow.com/questions/44329238
复制相似问题