查询';对象';类别及';类型';python中的类
我在命令式/动态python语言的基于类的OOP范例方面有一个查询。下面是python中的类层次结构图,摘自 根据这个图,我理解python中的每个数据类型都是一个类查询';对象';类别及';类型';python中的类,python,oop,Python,Oop,我在命令式/动态python语言的基于类的OOP范例方面有一个查询。下面是python中的类层次结构图,摘自 根据这个图,我理解python中的每个数据类型都是一个类bool类是对象类的直接子类。当我们创建一个新的用户定义类(Natalie)时,object类将是这个类的最终祖先。类对象(int/str/object)本身就是type类的实例。在java世界中,我们称它为“类”类,而不是typeClass 我的问题是: (一) 我的理解正确吗 (二) 如果是,我与类型到对象类的箭头方向混淆。我
bool
类是对象
类的直接子类。当我们创建一个新的用户定义类(Natalie
)时,object
类将是这个类的最终祖先。类对象(int
/str
/object
)本身就是type
类的实例。在java世界中,我们称它为“类”类,而不是type
Class
我的问题是:
(一)
我的理解正确吗
(二)
如果是,我与类型
到对象
类的箭头方向混淆。我如何理解这一点
(三)
我无法理解/想象这两个短语(棕色),请帮助我
the object class is an instance of the type class and itself
the type class is an instance of the object class and itself
我不知道这对你的帮助是否比物体更大,但有一些经验证据
我不知道这对你的帮助是否比实物更大,但有一些经验证明你的理解基本上是正确的<代码>类型和
对象
是特殊的,因为它们是类型层次结构的基础。一切都是对象的实例。每个类型/类都是类型
的实例。因此type
是object
的一个实例,object
也是type
的一个实例
这意味着继承关系实际上不能表示为树,因为存在一个循环:type
和object
是彼此的实例。这种相互继承通常是不可能的,但Python中这些基本类型就是这样的:它们打破了规则。该图有些误导,因为它将类型
显示为继承自对象
,而不是相反。实际上,type
和object
之间的箭头应该是双头的,表示继承是双向的
区分哪些类型/类继承自哪些类型/类以及这些类型/类是哪些类型/类的实例很重要,尽管在该图中没有直接表示。类或类型(如int
或Natalie
)是对象
的子类,但它是类型
的实例。你在问题3中提到的两个陈述与此相关。对象
类型是对象
的一个实例,因为一切都是一个对象object
也是type
的一个实例,因为object
是一个类型(也称为类)。同样地,type
是object
的一个实例,因为一切都是一个对象;而type
也是type
的一个实例,因为type
是一个类型(它是类型的类型,也是用户定义类的类型)
图中还有一个不准确的地方:bool
实际上不是object
的直接子类,而是int
的子类(这是object
的直接子类)。你的理解基本正确<代码>类型
和对象
是特殊的,因为它们是类型层次结构的基础。一切都是对象的实例。每个类型/类都是类型
的实例。因此type
是object
的一个实例,object
也是type
的一个实例
这意味着继承关系实际上不能表示为树,因为存在一个循环:type
和object
是彼此的实例。这种相互继承通常是不可能的,但Python中这些基本类型就是这样的:它们打破了规则。该图有些误导,因为它将类型
显示为继承自对象
,而不是相反。实际上,type
和object
之间的箭头应该是双头的,表示继承是双向的
区分哪些类型/类继承自哪些类型/类以及这些类型/类是哪些类型/类的实例很重要,尽管在该图中没有直接表示。类或类型(如int
或Natalie
)是对象
的子类,但它是类型
的实例。你在问题3中提到的两个陈述与此相关。对象
类型是对象
的一个实例,因为一切都是一个对象object
也是type
的一个实例,因为object
是一个类型(也称为类)。同样地,type
是object
的一个实例,因为一切都是一个对象;而type
也是type
的一个实例,因为type
是一个类型(它是类型的类型,也是用户定义类的类型)
图中还有一个不准确的地方:bool
实际上不是object
的直接子类,而是int
的子类(它是object
的直接子类)。在Java中,object class是每个类的超类,可以使用单一继承,但在python中,情况并非如此
在爪哇
在Python3中,在从对象继承之前
继承对象后
所以,当您在pythyon中创建一个类时,它不是从对象继承的。它基本上遵循模块化架构。与java的树结构不同。在java中,对象类是每个类的超类,可以使用单一继承,但在python中不是这样
在爪哇
在Python3中,在从o继承之前
print (isinstance(type,object))
print (type.__class__)
print (isinstance(object,type))