yancyyu
大道至简,我用python
python进阶
“
问题
为啥说python的面对对象更加彻底?
对象这个词想必大家都很熟悉,但是在实际的编程中,面向对象编程指的是一种编程思想,它更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象。那么问题来了,那么为什么大家都说python是更加彻底的面对对象呢,它到底彻底在哪里?
它与其他编程语言的不同
在python中,函数和类也是对象,属于python的一等公民。这些一等公民也就是对象具有以下几个特性:
实现原理
静态语言中将类加载到内存中运行的时候,类是不可修改的,因为已经编译完成。python为动态语言,全面向对象编程:所有得类都是type的实例,除object来其他类都继承object类,都是可以修改的。
魔法函数
1
魔法函数贯穿了python的面对对象实现机制。
一个魔法函数的栗子
魔法函数的效率
这里用__len__函数来举例
len魔法函数,python内置类型(int list dict)底层均为c语言写的,需要用cython解释器去执行,所以长度在一开始分配内存空间的时候就已经确定了,而不是去遍历,所以用魔法函数的len的效率高。
鸭子类型和多态
2
鸭子类型和多态
python是基于鸭子类型设计的,鸭子类型算是一种协议。鸭子类型是一种特点的描述方式,鸭子类型就是多态成立的前提,这个类型与静态语言不同的是,不需要很严格的规范,在一开始就确定类的数据结构类型。而是我有这个方法,那么我就具有某一个同样有这个方法的数据类型的特性,而数据类型的特性是根据魔法函数来实现的,决定了该class可以如何被使用。
总结
/ 2022.5.3