今天主要学习内容:
1.初始面向对象
2 .类 ,对象
3,面向对象和面向过程的对比
4.面向对象的三大特征
1,初始面向对象
面向过程 :
一切以实物的发展流程为中心
面向对象:
一切以对象为中心,一切皆为对象 ,具体的某一个事物就是对象
打比方 大象进冰箱 :
步骤 第一步 ,开门 第二部 , 装大象 ,第三步,关门
面向对象: 大象自己进冰箱
2 .类与对象
class car: #类名 ,创建对象 pass #造车 c=car() #创建一辆车 c.color='红色' #给车添加属性 c.pai='鲁A88888' c.pailaing='1.4T' print(c.color)
下面我们要介绍一种新方法
class car(): #创建类 def__init__(self,color,pai,pailiang):# __init__(self)是默认开始创建的属性,
在创建对象的时候,默认执行这个函数 self.color=color #给车一个颜色 self.pai=pai self.pailiang=pailiang def pao(self): #定义一个动作,在类中写函数叫方法(与函数的定义一样) print('我的车会跑') che=car('红色','鲁A88888','200T') #传参 che.pao() #执行你的车的动作
3. 面向对象与面向过程的对比
1) 脚本 (此时代码最简单,但是不需要构思整个程序的概况)
print("开门") print("装大象") print("关门")
2) 函数式编程(比脚本麻烦,对功能有了概括,稍微有了点逻辑)
def kai(): print('开门') def zhuang(): print("装大象") def guan(): print('关门')
3) 面向对象编程 ,整个系统进行分析,分析出需要那些对象,然后给对象进行归类
#先写类,然后使用类创建对象,最后用对象去执行相关的操作 class Elephant: def __init__(self): print("创建了一个大象") def kai(self): print("大象开门") def zuan(self): print("大象进冰箱") def guan(self): print("大象把门带上") dx = Elephant() dx.kai() dx.zuan() dx.guan()
函数侧重的是功能
面向对象侧重的是 归类
面对对象的程序:结果相对清晰 .缺点: 代码量比原来大,上手难
面对对象比面向过程啥味好一些,可维护性比原来好
python同时支持面向对象和面向过程:
面向过程: 应用程序相对比较小. 不需要大规模的设计
面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构)
4. 面向对象的三大特征 : 封装 ,继承 ,多态
1) 封装
对属性的封装
对功能的封装
模块
包
class Student: def __init__(self, num, name, clazz): self.num = num self.name = name self.clazz = clazz stu = Student("10010", "曹宝哥", "三年二班") # 把多个信息(值) 保存在一个对象里面 stu2 = Student("10086", "王低", "三年一班") def kill_stu(s): print("杀%s" % (s.name)) kill_stu(stu2) class Game: def login(self): print("登录") def recharge(self): print("充钱") def uninstall(self): print("卸载") def zhaoduixiang(self): print("找对象") class Game1: def recharge(self): print("充钱") def uninstall(self): print("卸载") class Game2: def recharge(self): print("充钱") def uninstall(self): print("卸载") g = Game2() g.uninstall()
2) 继承 当出现xxx是一种yyy类型的东西. 可以使用继承关系
子类自动拥有父类中除了私有内容外的其他所有内容
王思聪(熊猫TV) -> 王健林(年龄)
继承目的: 对父类进行扩展
父类的对象不能执行子类中的功能
class Foo: def getMoney(self): print("拿钱") class Bar(Foo): pass b = Bar() b.getMoney() # 此时调用的是父类中的方法
3) 多态
多态性: 同一个对象. 多种形态.
python支持的是鸭子类型. 会嘎嘎叫的东西就是鸭子
为了程序能够正常执行. 本来需要传递进来一只鸭子. 但是我只需要传递一个会嘎嘎叫的东西就可以了
# 模拟动物园 # class Animal: # def chi(self): # print("会吃") # # class GoldenMonkey(Animal): # def chi(self): # print("用手拿着吃, 五花八门") # # class Tiger(Animal): # def chi(self): # print("老虎吃肉") # # class Elephant(Animal): # def chi(self): # print("大象吃香蕉") # # class QiE(Animal): # def chi(self): # print("企鹅吃人民币") # # # 以下代码是饲养员 # # 优点:超强的可扩展性. 面向对象的核心就是多态 # def wei_animal(ani): # 传进来的东西要会吃就行 # ani.chi() # # # 动物园 # t = Tiger() # m = GoldenMonkey() # e = Elephant() # # wei_animal(t) # wei_animal(m) # wei_animal(e)