python中一切皆对象的理解
2021-05-29 13:03
标签:引用类型 解释 类型 反射 对象 实例 好的 article 说明 一切皆对象? 学过Java都知道,Java中有8个基本类型,其余的都是继承自Object类的引用类型。方法内的基本类型变量会在栈上分配,而引用类型会通过逃逸分析来决定在栈上分配或堆上分配。Java中关于类和对象是针对引用类型而言的。 但在Python中,OO的思想被彻底的实现了——Python中一切皆对象。这样就意味着,不论是int,str,还是dict,list,再或者是自己定义的类,实例化出来都是一个对象。这是Python与Java很大的不同。 然而光是这一点不足以说明“一切皆对象”,为什么这么说?因为Python中函数、类、类型等等也都是对象。我们知道Python是动态类型语言,虽然不用声明类型,但是每个对象都隐藏着一个固定的类型(可以通过type(obj)查看),而这个类型也是一个对象。 这就厉害了,Java的动态特性的实现时基于可以通过反射技术改变内存中类的结构,而Python不必这么复杂,由于类也是一种对象,直接修改对象就可以实现了。 有了下面这张图可能会更好理解: 我们可以从以下三句话来理解上面这幅图。
1“一切皆对象” 2“一切对象都继承自object,object自己例外” 3“一切类型都是type类型的实例,没有例外” 说好的禁止套娃呢。不过Python凭借着这样的对象模型设计真正实现了一切皆对象的OO思想。就是这么简单粗暴,所以人生苦短我用Python。 原文链接:https://blog.csdn.net/qq_23845067/article/details/105962773 python中一切皆对象的理解 标签:引用类型 解释 类型 反射 对象 实例 好的 article 说明 原文地址:https://www.cnblogs.com/zhjblogs/p/14767421.html
不过多解释,上面已经提到过了。
这个和Java类似,总得有个基类,囊括一些最基本的函数及属性,同时也方便多态的管理。
object不继承自object也好理解,这样的套娃是没有意义的。
type本身是类型也是对象,和其他的int list str之类的并无太大区别。所以就不难理解,type也是type类型的实例。
除了这个以外还有一个环形关系,那就是type是object的子类,同时object也是type的实例。
上一篇:数组篇