我在命令式/动态python语言的基于类的OOP范例方面有一个查询.下面是从链接中获取的python中的类层次结构图.

根据图表,我理解,python中的每个数据类型都是一个类.bool上课是班级的直接孩子object.当我们创建一个新的用户定义的类(Natalie)时, object类将成为这个类的最终祖先.类对象(int/ str/ object)本身是type类的实例.在java世界中,我们将其称为"Class"类而不是type类.
我的问题是:
1)我的理解是否正确?
2)如果是,很困惑与从箭头方向 type以object类.我怎么理解这个?
3)我无法理解/可视化这两个短语(棕色),请帮助我.
the object class is an instance of the type class and itself
the type class is an instance of the object class and itself
Run Code Online (Sandbox Code Playgroud)
你的理解基本上是对的. type并且object特别在于它们是类型层次结构的基础.一切都是一个例子object.每个类型/类都是一个实例type.所以,type是的一个实例,object并且object也是一个实例type.
这意味着继承关系实际上不能表示为树,因为存在一个循环:type并且object是彼此的实例.这种相互继承通常是不可能的,但这就是Python中这些基本类型的方式:它们违反了规则.该图有点误导,因为它显示type为继承object而不是相反.真的,之间的箭头type,并object应该是双头,说明继承是双向的.
区分哪些类型/类继承和它们是什么实例很重要,尽管这不是直接在该图中表示的.一个类或类型(如int或Natalie)是亚类的object,但它是一个实例的type.您在问题3中提到的两个陈述与此有关.的object类型是的一个实例object,因为一切是一个对象; object也是一个实例type,因为object是一个类型(又称一个类).同样,type是一个实例object,因为一切都是一个对象; 并且type也是一个实例type,因为它type是一个类型(它是类型的类型,以及用户定义的类的类型).
图中还有一个不准确的地方:bool实际上object并不是它的直接子类,而是它的子类int(它是它的直接子类object).
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |