面向对象概述
面向对象概述
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。它把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
例如生活中我们会遇到各种数字及其运算,于是计算机科学家们就把数字抽象出来,成为一类对象。它们有别于其他事物(例如文字,图像)的特征,有自己的一套运算、操作方法。
Python 中的数字当然非常类似数学中的数字,但也受限于计算机中的数字表示方法。
为了方便,又把数字这一类对象,基本分成了整数,浮点数,复数三类对象。这对应 Python 中的 int,float,comlex 三种数字类型,三种数字类型下具体的整数,浮点数,复数也是对象。它们有共同的特征和计算方法,也有各自特有的特征和方法。例如都可以进行加减乘除,只有整数有按位运算。
整数中,0 和 1 的特殊性,又使得可以将整数类中再分出一类对象,布尔类型对象。布尔类型的对象,只有两个对象,True 和 False。
从数字类对象,到三类数字对象,到布尔类对象,到具体的数字对象以及 True 和 False 对象,层层细分,最终是具体的一个个对象,它们都是对象。这也是为什么称 Python 一切皆对象的原因。
类似地,对数据,因为要实现的目的不同,将装数据的 “容器” 分为字符串,列表,元组,集合,字典等类型的对象。
函数抽象出函数对象,模块又抽象出模块对象…… 甚至连空都是对象(None)。
具体的对象,称为实例,它归属于某个类。而所有的类,又都是 object 对象的子类。各种类(类型),又统一归为类型对象(type)。
type(1), isinstance(1,int) # 1 是 int 类的实例
(int, True)
issubclass(int,object) # int 类是 object 的子类
True
type(int), isinstance(int,type) # int 是 type 的实例
(type, True)
按照面向对象的思想,我们可以定义一个 “人” 类对象,然后很方便地给这个 “人” 加上现有的各种函数,类,以及模块的功能,造出更多更多有各种特异功能的 “人”。这是不是非常伟大的设计思想呢?