1.面向对象的思想
面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路
是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。
例如:菜鸟买电脑
(1)自己买
在网上查找资料
根据自己预算和需求定电脑的型号 MacBook 15 顶配 1W8
去市场找到苹果店各种店无法甄别真假 随便找了一家
找到业务员,业务员推荐了另外一款 配置更高价格便宜,也是苹果 系统的 1W 砍价30分钟 付款9999 成交 回去之后发现
各种问题
(2)找大牛
找一个靠谱的电脑高手 给钱交易
同样的问题,不一样的解决思路,面向过程和面向对象都是解决问题的思路。
(1)买电脑的第一种方式:
强调的是步骤、过程、每一步都是自己亲自去实现的
这种解决问题的思路我们就叫做面向过程
(2)买电脑的第二种方式:
强调的是电脑高手, 电脑高手是处理这件事的主角
对我们而言,我们并不必亲自实现整个步骤
只需要调用电脑高手就可以解决问题
这种解决问题的思路就 是面向对象
面向过程:根据业务逻辑从上到下写代码。程序员是执行者
面向对象:将数据与函数绑定到一起,进行封装,对外界提供调用。程序员是指挥者
面向对象的思维解决问题的重点
1)当遇到一个需求的时候不用自己去实现,如果自己一步步实现那就是面向过程
2)应该找一个专门做这个事的人来做
3)面向对象是基于面向过程的
2.类与对象
面向对象编程的两个非常重要的概念:类和对象
对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对
象抽取定义,提出了另外一个新的概念——类
类:
人以类聚 物以群分。
具有相似内部状态和运动规律的实体的集合(或统称、抽象)。
具有相同属性和行为事物的统称
类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在,
这 个存在就是对象,一个类可以找到多个对象。
对象:
某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。
可以是直接使用的
类与对象之间的关系:
类就是创建对象的模板
类的组成:
主要考虑三个方面
类的名称:类名
类的属性:一组数据
类的方法:允许操作的方法(行为)
比如:人类
事物名称(类名):人(Person)
属性:身高(height)、年龄(age)
方法(行为/功能):跑(run)、打架(fight)
类的抽取:
如何把日常生活中的事物抽象成程序中的类?
拥有相同(或者类似)属性和行为的对象都可以抽像出一个类
一般名词都是类(名词提炼法)
3.定义类
定义一个类,格式如下:
class 类名:
方法列表
例如:定义一个车类
# 定义类
class Car:
# 方法
def move(self):
print('车在奔跑...')
# 鸣笛
def toot(self):
print("车在鸣笛...嘟嘟..")
4.创建对象
python中,可以根据已经定义的类去创建出一个个对象
创建对象的格式为:
对象名 = 类名()
5.__init__()函数
通过__init()__函数为对象初始化属性值
对对象的属性进行赋值的行为称之为针对性初始化。
__init__(self)方法,在创建一个对象时默认被调用,不需要手动调用
__init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参, 那么__init__(self)中出了self作为一个形参外还需要
2个形参,例如__init__(self,x,y)
__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对 象引用传递进去
6.__str()__函数
当我们通过print()函数将对象进行打印时,打印的是该对象的类型和地址。
如果想打印对象时,出来的是对象的一些属性值,怎么办呢?
def __str__(self):
msg = "嘿。。。我的颜色是" + self.color + "我有" + int(self.wheelNum) + "个 轮胎..."
return msg
当使用print输出对象的时候,只要自己定义了__str__(self)方法,
那么就会打印从在这个 方法中return的数据
7.self关键字
所谓的self,可以理解为自己 可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思 某个对象调用其方法时,python解
释器会把这个对象作为第一个参数传递给self,所以开发 者只需要传递后面的参数即可