Python 的 type 、object 和 java 的 class、object 都是类似于鸡生蛋蛋生鸡的问题,此处对比理解一下:
一、Python 的 type 、object
object 和 type的关系很像鸡和蛋的关系,先有object还是先有type没法说,obejct和type是共生的关系,必须同时出现的。
在Python的世界中,object是父子关系的顶端,所有的数据类型的父类都是它;type是类型实例关系的顶端,所有对象都是它的实例的。
- type是所有元类的父亲。我们可以通过继承type来创建元类。
- object是所有类的父亲,大部份我们直接使用的数据类型都存在这个列的。
- object的type是type
python3当中所有类都默认继承自object类,这些类默认的metaclass是type,元类控制着类的创建,使得python类的创建具有灵活性
这是python动态语言的表现之一
动态语言的定义:动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。
它是一类在执行时能够改变其结构的语言:比如新的函数、对象、甚至代码能够被引进,已有的函数能够被删除或是其它结构上的变化。
动态语言眼下很具有活力。
二、java 的 class、object
java.lang.Class是java.lang.Object的派生类,前者继承自后者。
====================================================================
“鸡・蛋”问题通常都是通过一种叫“自举”(bootstrap)的过程来解决的。
“鸡蛋问题”的根本矛盾就在于假定了“鸡”或“蛋”的其中一个要先进入“完全可用”的状态。而许多现实中被简化为“鸡蛋问题”的情况实际可以在“混沌”中把“鸡”和“蛋”都初始化好,而不存在先后问题;在它们初始化的过程中,两者都不处于“完全可用”状态,而完成初始化后它们就同时都进入了可用状态。
所以在进行初始化动作之前它们的存储空间就已经有着落了,真正做初始化时只要把它们的相互引用串起来就好。