世间万物皆 “对象”,对象 “集合” 即为 “类”
——有相同属性的对象的集合聚集成一类,
将类赋值给一个变量,就是一个对象,即为将类实例化
类:变量→属性 和 函数→方法
面向过程 以解决问题的步骤来划分
面向对象 以功能来划分
面向过程就是自顶向下的编程;
面向对象就是高度实物抽象化。
面向过程和面向对象并没有优劣之分,只有适合与不适合。
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
面向过程 和 面向对象 编程
- 面向过程 编程:函数式编程,C程序,shell等
- 面向对象 编程:功能式编程,C++ ,Java,Python等
面向对象的基本结构:
面向对象的主要思想是: 封装 继承 多态
类的定义:
类把需要的变量和函数组合成一起,这样包含称为"封装"
class A(object):
类的结构:
class 类名:
成员变量 - 属性
成员函数 - 方法
Class 示例:
class People(object): # 定义类(class),object可以有,也可以没有 color = 'yellow' #定义了一个静态属性,成员变量 def think(self): #定义了一个动态方法,这个方法里一定要有self,还可以带多个属性,成员函数 self.color = "black" #如果需要调用类里的属性,就要用到self.color来调用该静态属性 print("I am a %s" % self.color) #调用动态方法时的输出 print("i am a thinker") ren = People() #将类赋值给'ren'这个变量,就是一个对象,即为将类实例化 print(ren) # 单纯打印这个'ren'变量是一个对象(object),所以将类实例化后的便是对象(object) print(ren.color) #输出,'ren'对象的静态属性, ren.think() #使用这个类里面的.think()方法 # 输出结果: <__main__.People object at 0x7f646d144690> #打印这个方法的信息 yellow #静态属性的输出结果 I am a black #这里输出的是 ren.think() i am a thinker