python相比Java这种静态语言拥有更加彻底的面向对象设计(Java中区分类class与对象object,而python中class同样属于对象),python一切皆对象是其灵活性的根本,如python元类编程、猴子补丁。
python中函数与类也属于对象,被划分为python的一等公民(一等公民的特性:赋值给一个变量、可以添加到集合对象中、可以作为参数传递给函数、可以作为函数的返回值,以上也是python装饰器的实现原理)。其他的诸如代码、模块也是对象。python用类来实例化对象的过程,可以将类看做一个模板,然后使用模板生成对象。由于类也是一个对象,所以我们可以动态地修改其属性。
type、object和class的关系
关键是:object是type的实例,所有内置类都继承自object,type也继承了object,type创建了所有对象。所有对象(包括type自己)都是type的实例。静态语言中类加载到内存后,因为已经编译完成,所以修改起来需要很高的难度,而动态语言python就可以很灵活的修改。type实例自身的原理在于python是使用C编写的,对象其实也就是内存块,使用指针可以很简单地实现。
python中的常见内置类型
python中对象有三个特征:身份(对象在内存中的地址,使用id()查看)、类型、值。
python常见的内置类型:None(全局仅有一个)、数值、迭代类型、序列类型、映射(dict)、集合、上下文管理类型、其他。
python在解释器启动时会生成一个全局None对象。数值类型包含int、float、complex、bool。序列类型包含list、二进制序列(bytes、bytearray、memoryview)、range、tuple、str、array。集合包含set和frozenset(不可修改的set),由于set和dict实现原理都是一致的,性能非常高。其他类型包含模块类型、class和实例、函数类型、方法类型、代码类型、object类型、type类型、ellipsis类型(省略号)和notimplemented类对象(面向对象的高级设计时会使用)、生成器对象等。
喜欢 (4)or分享 (0)