Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询';对象';类别及';类型';python中的类_Python_Oop - Fatal编程技术网

查询';对象';类别及';类型';python中的类

查询';对象';类别及';类型';python中的类,python,oop,Python,Oop,我在命令式/动态python语言的基于类的OOP范例方面有一个查询。下面是python中的类层次结构图,摘自 根据这个图,我理解python中的每个数据类型都是一个类bool类是对象类的直接子类。当我们创建一个新的用户定义类(Natalie)时,object类将是这个类的最终祖先。类对象(int/str/object)本身就是type类的实例。在java世界中,我们称它为“类”类,而不是typeClass 我的问题是: (一) 我的理解正确吗 (二) 如果是,我与类型到对象类的箭头方向混淆。我

我在命令式/动态python语言的基于类的OOP范例方面有一个查询。下面是python中的类层次结构图,摘自

根据这个图,我理解python中的每个数据类型都是一个类
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))