Python面向对象介绍上篇

Python面向对象

1、面向对象介绍

思考

  • 例如:你有一个想法,你要做一个项目。然后呢,你聚集了n个人,说明你要做啥,然后大家开始干。

根据小编的经验,这个项目肯定是失败的。 因为每个人做的事情很多,分工不明确,有些肯定到最后都是没人做的,所以问题来了,必须要进行分工, 哪些人搭架子,做什么。哪些负责哪一块。

例如:数一下如下字符串有多少个字符

1
2
3
4
5
6
7
a2datahelloworldwwwa2datacn

a2data,helloworld,www,a2data,cn

显然,被分组后的字符更容易计数


总结:

大型的项目,必须要进行分工,将函数分为几个不同的类型,每个人负责一个或多个类型,比如一个人负责网站首页,一个人负责订单界面,一个人负责用户设置页面。

面向对象与面向过程

  • 面向过程:根据业务逻辑从上到下写代码
  • 面向对象:将数据与函数绑定到一起,分类进行封装,每个程序员只要负责分配给自己的分类,这样能够更快速的开发程序,减少了重复代码
  • 对于小编而已,跟大家一样,刚开始都喜欢面向过程开发。其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

解决吃啤酒鸭的问题

第一种方式(面向过程):

1
2
3
4
5
6
7
1、养鸭子
2、鸭子长成
3、杀
4、作料
5、烹饪
6、吃
7、卒

第二种方式(面向对象):

1
2
3
1、找个卖啤酒鸭的人 
2、给钱 交易
3、吃

需要了解的定义性文字:

面向对象(object-oriented ;简称: OO) 至今还没有统一的概念 我这里把它定义为: 按人们 认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。

面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

2、类和对象

2.1、类

人以类聚 物以群分

  • 具有相似内部状态和运动规律的实体的集合(抽象)
  • 具有相同属性和行为事物的统称

类是抽象的,使用的时候,通常一个类可以找到多个对象。

例如:轮胎,汽车,飞机,推车..等等

2.2、对象

某一个具体事物的存在,现实中就是看得见摸得着的。

code: 可以直接使用的

2.3、类与对象的关系

类就是创建对象的模板

2.4、类的构成

类(Class) 由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对进行操作的方法 (行为)

狗类的设计

  • 类名:狗(Dog)
  • 属性:品种 、毛色、性别、名字、 腿儿的数量
  • 方法(行为/功能):叫 、跑、咬人、吃、摇尾巴

2.5、类的抽象

拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

方法:一般名词都是类(名词提炼法)

3、定义类

定义一个类,格式如下:

1
2
class 类名:
方法列表

说明:

  • 定义类时有2种:新式类和经典类,如下的Car为经典类,如果是Car(object)则为新式类
  • 类名 的命名规则按照”大驼峰”

4、创建对象

python中,可以根据已经定义的类去创建出一个个对象

创建对象的格式为:

1
对象名 = 类名()

创建对象demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 定义类
class Car:
# 移动
def move(self):
print('车在奔跑...')

# 鸣笛
def toot(self):
print("车在鸣笛.....")


# 创建一个对象,并用变量BMW来保存它的引用
BM = Car()
BM.color = '黑色'
BM.wheelNum = 4 #轮子数量
BM.move()
BM.toot()
print(BM.color)
print(BM.wheelNum)

5、Self

理解Self

  • 所谓的self,可以理解为自己
  • 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可

6、init

6.1、使用方式

1
2
3
4
def 类名:
#初始化函数,用来完成一些默认的设定
def __init__():
pass

6.2、init()方法调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 定义汽车类
class Car:

def __init__(self):
self.wheelNum = 4
self.color = '蓝色'

def move(self):
print('车在跑,目标:北京')

# 创建对象
BM = Car()

print('车的颜色为:%s'%BM.color)
print('车轮胎数量为:%d'%BM.wheelNum)
  • __init__()方法,在创建一个对象时默认被调用,不需要手动调用
  • __init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)
  • __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去

7、“魔法”方法

定义 __str__() 方法

  • 在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法
  • 当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据

评论