目录
一、面向对象编程的基础
解决菜鸟买电脑的故事
第一种方式:
1)在网上查找资料
2)根据自己预算和需求定电脑的型号 MacBook 15 顶配 1W8
3)去市场找到苹果店各种店无法甄别真假 随便找了一家
4)找到业务员,业务员推荐了另外一款 配置更高价格便宜,也是苹果系统的 1W
5)砍价30分钟 付款9999
6)成交
回去之后发现各种问题
第二种方式 :
1)找一个靠谱的电脑高手
2)给钱交易
买电脑的第一种方式:
强调的是步骤、过程、每一步都是自己亲自去实现的
这种解决问题的思路我们就叫做面向过程
买电脑的第二种方式:
强调的是电脑高手, 电脑高手是处理这件事的主角,对我们而言,我们并不必亲自实现整个步骤只需要调用电脑高手就可以解决问题
这种解决问题的思路就 是面向对象
\
二、类和对象
类
l具有相似内部状态和运动规律的实体的集合(或统称为抽象)。
具有相同属性和行为事物的统称
对象
1.某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。2. 可以是直接使用的
类和对象的关系
1.类就是创建对象的模板2.对象就是根据类产生的一个具体实例
类
类是同一类对象的属性和行为的抽象和总结
类描述同一类对象应包含的数据
类描述同一类对象的行为特征
类是抽象的,是一个概念模型
一个类可以找到多个对象
类是对象的模板,对象是该类的实例
对象
万事万物皆对象
面向对象方法的核心
具有明确的属性和行为
程序是对象的集合,通过消息交互
类和对象关系
类就是创建对象的模板
对象就是根据类产生的一个具体实例
类(Class) 由3个部分构成:
类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法 (行为)
定义一个类,语法格式:
class 类名:
方法列表
# 新式类定义形式
class Hero(object):
def info(self):)
print("英雄各有见,何必问出处。")
self 代表类的实例,而非类
1.类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。2.所谓的self,可以理解为自己可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思3.某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可
python中,可以根据已经定义的类去创建出一个或多个对象。
对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()
对象的定义
添加和获取对象属性
在方法内通过self获取对象属性
创建对象后再去添加属性有点不合适,有没有简单的办法,可以在创建对象的时候,就已经拥有这些属性?
三、魔法方法
类的初始方法——__init__()方法
•python中提供__init__()方法,•在创建对象的时候,直接设置对象的属性•语法格式:• def __init__(self):• pass•例子:在上面的Car类上,添加__init__()•__init__()方法,创建对象时,默认被调用。
__init__(self) 默认有1个参数名字为self,如果在创建对象时传递了多个个参数
语法格式:
def __init__(self,参数1,...,参数n):
self.属性1 = 参数1
......
self.属性n = 参数n
类的字符信息输出——__str__()方法
当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据,举例如下:
class Car:
def __init__(self, newWheelNum, newColor):
self.wheelNum = newWheelNum
self.color = newColor
def __str__(self):
msg = "嘿...我的颜色是" + self.color + ",我有%d"%self.wheelNum+ "个轮胎..."
return msg
•#创建对象:•BMW = Car(4, "白色")•print(BMW)•执行:python3 XXX.py•嘿...我的颜色是白色,我有4个轮胎...•注意:__str__()返回字符串类型
类的析构方法——__del__()方法
•创建对象后,python解释器默认调用__init__()方法;•当删除一个对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法。语法格式:
def __del__(self):
pass
•注意 :•当有1个变量保存了对象的引用时,此对象的引用计数就会加1•当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除
四、继承
生活中的继承
单继承
故事情节:煎饼果子老师傅在煎饼果子界摸爬滚打几十年,拥有一身精湛的煎饼果子技术,并总结了一套"古法煎饼果子配方"。
可是老师傅年迈已久,在嗝屁之前希望把自己的配方传承下去,于是老师傅把配方传给他的徒弟大猫...
多继承
故事继续:大猫掌握了师傅的配方,可以制作古法煎饼果子。但是大猫是个爱学习的好孩子,他希望学到更多的煎饼果子的做法,于是通过百度搜索,找到了一家煎饼果子培训学校。(多继承)
五、test
代码完成:
a)小明爱跑步,爱吃东西。
1)小明体重75.0公斤
2)每次跑步会减肥0.5公斤
3)每次吃东西体重会增加1公斤
4)小美的体重是45.0公斤
class demo():
def __init__(self):
self.tizhong = 0
def pao(self):
self.tizhong = self.tizhong - 0.5
def eat(self):
self.tizhong = self.tizhong + 1
def put(self):
print(self.tizhong)
xiaoming = demo()
xiaoming.tizhong = 75.0
xiaomei = demo()
xiaomei.tizhong = 45.0
xiaomei.put()
xiaoming.eat()
xiaoming.pao()
xiaoming.put()