* **7.1 类和实例** * **7.1.1 类** * **7.1.2 实例变量和类变量** * **7.1.3 类的方法** * **7.2 面向对象编程有三大重要特征** * **7.2.1 封装** * **7.2.2 继承** * **7.2.3 多态** * **7.3 成员保护和访问限制** * **7.4 特殊成员和魔法方法** 面向对象编程:`Object Oriented Programming`,简称`OOP`,是一种程序设计方法。 ## **面向对象和面向过程的区别** ``` 完成自我介绍功能,面向过程完成功能 stu_a = { "name":"A" "age":18, "hometown":"东北" } stu_b = { "name":"B" "age":19, "hometown":"山东" } stu_c = { "name":"C" "age":20, "hometown":"河北" } def stu_info(stu): # 自我介绍 for key,value in stu.items(): print("key=%s,value=%d"%(key,value)) stu_info(stu_a) stu_info(stu_b) stu_info(stu_c) # 接下来我们用面向对象的思想来完成功能 stu_a = Student(个人信息) stu_b = Student(个人信息) stu_c = Student(个人信息) stu_a.info() stu_b.info() stu_c.info() # 文件读写 f = open(path,'r') f.read() f.close() ``` 面向过程:根据业务逻辑从上到下写代码,要面面俱到都要思考到 面向对象:将数据与函数绑定到一起,进行封装。减少重复代码的重写过程,找一个能完成这个功能的哥们来完成 面向对象和面向过程都是解决问题的一种思路而已。 ## **概念及术语** - **类(Class)**: 用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。其中的对象被称作类的实例。 - **实例**: 也称对象。通过类定义的初始化方法,赋予具体的值,成为一个"有血有肉的实体"。 - **实例化**: 创建类的实例的过程或操作。 - **实例变量**: 定义在实例中的变量,只作用于当前实例。 - **类变量**: 类变量是所有实例公有的变量。类变量定义在类中,但在方法体之外。 - **数据成员**: 类变量、实例变量、方法、类方法、静态方法和属性等的统称。 - **方法**: 类中定义的函数。 - **静态方法**: 不需要实例化就可以由类执行的方法 - **类方法**: 类方法是将类本身作为对象进行操作的方法。 - **方法重写**: 如果从父类继承的方法不能满足子类的需求,可以对父类的方法进行改写,这个过程也称override。 - **封装**: 将内部实现包裹起来,对外透明,提供api接口进行调用的机制 - **继承**: 即一个派生类(derived class)继承父类(base class)的变量和方法。 - **多态**: 根据对象类型的不同以不同的方式进行处理。