概念
面向过程编程:把计算机程序视为一系列的命令集合,即一组函数的顺序执行,简化程序设计。面向过程把函数继续切分为子函数,即把大块函数切割成小块函数,降低系统的复杂度。
面向对象编程:把计算机程序视为一组对象集合,每个对象都可以接收其它对象发来的消息,并处理这些消息。计算机程序的执行就是一系列消息在各个对象之间的传递。
Point:面向对象编程
- class Student(object):
// object 是所有类最终都会继承的类
// class Student(object):
- __init__方法
// 通过该特殊的方法在创建实例的时候吧属性绑定上去
// def __init__(self,name,score):
- 参数self
// __init__方法的第一个参数,在__init__方法内部将各种属性绑定到self,self指向创建的实例本身。
#Summary:
-类是创建实例的模板,而实例是一个个个具体的对象,各实例拥有的数据都相互独立,互不影响。
-方法是实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据。
-在 Python中,实例的变量名如果以 __ 开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。
封装
- 在类的内部定义访问数据的函数,这样就将“数据”封装起来了。
def print_score(self):
print("%s %s"%(self.name,self.score))
封装的另一个好处是可以为类增添新的方法。
访问控制
- 实例的变量名如果以 __ 开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
- 确保外部代码不能随意修改对象内部的状态,通过访问限制的保护,使代码更加健壮。
- 但还是可以通过在类中添加方法来访问
继承
继承最大的好处是子类获得了父类的全部功能。但也可以给子类添加方法,当子类和父类存在相同的方法时,子类的方法会覆盖父类的方法。
多态
- 在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做是父类。但是,反过来就不行。
- 调用方只管调用,不管细节
Summary
- 有了继承,才能有多态。在调用类实例方法的时候,尽量把变量视作父类类型