一、面向过程和面向对象
1、面向过程:
把编程任务划分成一个一个的步骤,然后按照步骤分别去执行。
- 以 小明起床上学 为例,面向过程则做了如下4件事:起床、穿衣、洗漱、上学、这
4个过程的顺序很重要,须一个一个实现。
对面向过程的思想:需要实现一个功能的时候,看看的是开发的步骤和过程,每一个
步骤都需要自己亲力亲为。
- 以 吃饭 举例:买菜、洗菜、煮饭、切菜........
2、面向对象:
把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述
某个事物在整个解决问题步骤中的行为。
- 以 小明起床上学 为例,我们关心的是小明这个对象,而不是 起床、穿衣、洗漱、上学这4
个过程,这 4 个过程是小明这个对象的一部分,只是其中的一种行为,而且对于这个行为
的顺序,没有强制要求。
对于面向对象的思想:当需要实现一个功能的时候,看重的并不是过程和步骤,而是关心的对象。
- 以 吃饭 举例:找 饭馆 对象,饭馆提供饭和菜,不关心做菜和煮饭的内部过程。
二、类和对象
类和对象是 面向对象 编程的两个核心概念。
1、类
类是对一群具有相同特征或行为的事物的一个统称,是抽象的,不能直接使用。就像一个模板,是
负责创建对象的。
特征 被称为 属性
行为 被称为 方法
1)类的构成:
类(Class)由3个部分构成
- 类的名称:类名
- 类的属性:一组数据
- 类的方法:允许对进行操作方法(行为)
2、对象
对象是由类创建出来的一个具体存在,可以直接使用。
由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。
<先有类,再有对象>
3、类和对象的关系
类是模板,对象是根据类这个模板创建出来的。
类只有一个,而对象可以有很多个
不同的对象之间属性可能会各不相同
类中定义了说明属性和方法,对象中就有什么属性和方法
<类名通常采用大驼峰命名法:如CapWords>
三、魔法函数
1、__init__方法:
在Python中,xx()的函数叫做魔法方法,指的是具有特殊功能的函数。
__init__()方法的作用:初始化对象。

说明:
- __init__()方法,在创建一个对象时默认被调用,不需要手动调用
- __init__(self)中的self参数,不需要开发者传递,pyhon解释器回自动把当前对象应用传递过去。
2、__str__方法:

说明:
- 在python中方法名如果是__xxx__()的,那么就有特殊功能,因此叫做“魔法”方法
- 当使用print输出对象的时候,默认打印对象的内存地址,如果类定义了__str__(self)方法,
那么就会打印从在这个方法中 return 的数据
- __str__方法通常返回一个字符串,作为这个对象的描述信息
3、__dle__()方法
创建对象后,python解释器默认调用__init__()方法;
当删除对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法

说明:
- 当使用del()删除变量指向的对象时,则会减少对象的引用计数,如果对象的引用计数不为1,那么会让
这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。
四、类属性和对象属性
1、对象属性:

2、类属性:
在类对象里定义类属性。类属性可以通过类对象和实例对象获取。类属性只能通过类对象修改,不能通过实例对象修改。

五、面向对象的各种方法
1、静态属性(@property):
静态属性的作用就是把类的函数属性,封装成类似数据属性,可以让我们用调用属性的方式来调用函数。

2、类方法(@classmethod):
类方法:是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,
一般以cls作为第一个参数,能够通过实例对象和类对象去访问。
类方法一般有两个作用:一是访问类属性。二是修改类属性。

3、静态方法(@staticmethod):
静态方法实际上是独立的,依靠在类中,但实际是只是调取关系。只是名义上归类管理,实际上就是一个工具包,可以供类和实例调用。
静态方法里不能直接调用类方法,要调用必须加上类名字去调用。

六、面向对象三大特性
1、封装:
封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部的操作和访问。

2、继承:
- 继承是一种创建新类的方式,新建的类可称为子类或派生类,父类可称为基类或超类
- python支持多继承,新建的类可以支持一个或多个父类

3、多态:
多态是指一类事物有多种形态,比如动物类,可以有锚,狗,猪等.(一个抽象类有多个子类,因而多态的概念依赖于继承)
(1)多态的定义
多态是一种使用对象的方式,子类重写父类方法,不同的子类对象调用相同的父类方法,可以产生不同的执行结果。
概括说,多态指的是一类事物可以有多种形态呈现。
(2)多态的好处
增加了程序可拓展性,只要有相同的特征,就可以创建一个新的类,使用者无需改原有的类的代码,更容易编写出通用的代码,做出通用的编程。
有了多态,增加了程序的调用灵活性,以不变应万变,不论对象千变万化,使用者都是同一种形式去调用。
1 #1、定义父类,提供公共方法 2 class Dog(): 3 #父类提供统一的方法,哪怕是空方法 4 def work(self): 5 pass 6 7 #2、定义子类,继承Dog类 8 #子类重写父类方法: 9 #定义2个类表示不同的警犬 10 class Huang(Dog): 11 def work(self): 12 print("追击敌人") 13 14 class Wang(Dog): 15 def work(self): 16 print("追查毒品") 17 18 #定义人类 19 class Person(): 20 def work_with_dog(self,dog): 21 dog.work() 22 23 #创建对象,(有多少个事物,就要创建多少个对象) 24 a = Huang() 25 b = Wang() 26 #传入不同对象,调用不同的功能 27 c = Person() 28 c.work_with_dog(a) 29 c.work_with_dog(b)
浙公网安备 33010602011771号