Python面向对象介绍上篇
Python面向对象
1、面向对象介绍
思考
- 例如:你有一个想法,你要做一个项目。然后呢,你聚集了n个人,说明你要做啥,然后大家开始干。
根据小编的经验,这个项目肯定是失败的。 因为每个人做的事情很多,分工不明确,有些肯定到最后都是没人做的,所以问题来了,必须要进行分工, 哪些人搭架子,做什么。哪些负责哪一块。
例如:数一下如下字符串有多少个字符
a2datahelloworldwwwa2datacn
a2data,helloworld,www,a2data,cn
显然,被分组后的字符更容易计数
总结:
大型的项目,必须要进行分工,将函数分为几个不同的类型,每个人负责一个或多个类型,比如一个人负责网站首页,一个人负责订单界面,一个人负责用户设置页面。
面向对象与面向过程
- 面向过程:根据业务逻辑从上到下写代码
- 面向对象:将数据与函数绑定到一起,分类进行封装,每个程序员只要负责分配给自己的分类,这样能够更快速的开发程序,减少了重复代码
- 对于小编而已,跟大家一样,刚开始都喜欢面向过程开发。其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
解决吃啤酒鸭的问题
第一种方式(面向过程):
1、养鸭子
2、鸭子长成
3、杀
4、作料
5、烹饪
6、吃
7、卒
第二种方式(面向对象):
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、定义类
定义一个类,格式如下:
class 类名: 方法列表
说明:
- 定义类时有2种:新式类和经典类,如下的Car为经典类,如果是Car(object)则为新式类
- 类名 的命名规则按照”大驼峰”
4、创建对象
python中,可以根据已经定义的类去创建出一个个对象
创建对象的格式为:
对象名 = 类名()
创建对象demo:
# 定义类
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、使用方式
def 类名:
#初始化函数,用来完成一些默认的设定
def __init__():
pass
6.2、init()方法调用
# 定义汽车类
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的数据