Python 14 面向对象一
初识面向对象
1. 面向对象和面向过程
- 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤,
即, 先是是什么 后是什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械式的编程思维
class Car: # 创建类(车)
pass
c = Car() # 创建一辆车
c.color = "red"
c.pai = "京A66666" #车的各种信息
c.pailiang = "1.6T"
print(c.color)
print(c.pai)
print(c.pailiang) # 直接可以打印
优点: 负责的问题流程化, 编写相对简单
缺点: 可扩展性差
2. 面向对象如何编写
说了这么多. 面向对象的程序如何编写呢? 想想在我们的世界中. 我们如何造一辆车?先由设计师来设计图纸. 设计师在图纸上勾勒出⻋应该是xx样的. 应该有什么. 以及这台车的功能等等. 然后交给工厂进行代理. 根据设计师设计的图纸去创造车. 程序也艺样. 我们需要
先设计一个图纸. 在图纸上把我要创建的对象进行描述. 然后交给工人去创建对象.
在这里, 我们画图纸的过程需要我们写类
class Car:
def __init__(self, color, pai, pailiang): # init创建类时自动使用 ,self 是创建对象
self.color = color # 创建属性
self.pai = pai
self.pailiang = pailiang
def run(self, speed): # 这里叫方法
print("车可以跑%s迈" % speed)
c1 = Car("red", "京A66666", "1.6T")
c2 = Car("white", "京B22222", "2,0T")
print(c1.color)
print(c2.color)
c1.run(100) # 这时. c1 这辆车可以跑了
c2.run(200) # c2 也可以跑
优点: 可扩展性强
缺点: 编程的复杂度高于面向过程
3. 面向对象三大特征
1.面向对象三大特征: 封装, 继承, 多态. 只要是面向对象编程语言. 都有这三个特征
1.封装
class对属性封装
self.xxx = xxxx
对方法封装
2.继承
子类可以自动拥有父类中除了私有属性外的其他所有内容
python中实现继承非常简单. 在声明类的时候, 在类名后添加一个小括号,
就可以完成继承关系. 那么什么情况可以使用继承呢? 单纯的从代码层次上来看. 两个类具有相同的功能或者特征的时候. 可以采用继承的形式. 提取一个父类, 这个父类中编写着两个类相同的部分. 然后两个类分别取继承这个类就可以了. 这样写的好处是我们可以避免写很多重复的功能和代码. 如果从语义中去分析的话. 会简单很多. 如
class Yaoguai:
def chi(self):
print("我是妖怪, 我就会吃人")
class BaiGuJing(Yaoguai): # 白⻣精继承妖怪
pass
bgj = BaiGuJing()
bgj.chi() # 先找自己,自己没有留找父类
2.多态
同一个对象多种形态
class Animal:
def chi(self):
print("动物就知道吃")
class Pig(Animal):
def chi(self):
print("猪在吃")
class Haski(Animal):
def chi(self):
print("哈士奇在吃")
class Alasika(Animal):
def chi(self):
print("阿拉斯加在吃")
class SiYangYuan:
def yanng_animal(self, ani):
ani.chi()
zhu = Pig()
erha = Haski()
ala = Alasika()
alex = SiYangYuan()
alex.yanng_animal(zhu)
alex.yanng_animal(erha)
alex.yanng_animal(ala)
多态的好处: 程序具有超高的可扩展性. 面向对象思想的核心与灵魂. python自带多态