一、面向过程和面向对象

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、对象属性:

通过类创建的对象称为实例对象,对象属性又称为实例属性,记录对象各自的数据,不同对象的同名实例属性,
记录的数据各自独立,互不干扰。在__init__方法里,以参数的形式定义。
 

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)

 

posted on 2022-05-19 16:47  121212???  阅读(62)  评论(0)    收藏  举报