一 、面向对象与面向过程
1.面向过程:一切以事物的流程为核心,核心是‘过程’,过程是解决问题的步骤,有先后顺序,的流水线思维。
优点 :负责的问题流程化,编写相对简单
缺点:可扩展性差
2.面向对象:一切以对象为核心,比如汽车有轮子,方向盘,发动机,这些我们都可以使用程序把他们造出来。
优点:可扩展性强
缺点:编程复杂度高与面向过程
二、面向对象的编写
1.类的创建
class Computer:
pass
以上完成了一个电脑的类的创建(相当于有了一张空白设计图纸)。
而 c_r = Computer() #相当于造了一台什么都没有的空白电脑。
通过使用 “对象.特征”可以给电脑添加各种属性 c.color = 'red' c.price = 4444等电脑的属性。
而大多数的电脑都有颜色、cpu、价格等相同的属性,所以就可以将他们放入一个类中。
class Computer: def __init__(self,name): self.name = name computer = Computer('lenovo') computer.price = '1000' computer.model = 'lenovo' computer.size = '14.5' print(computer.name) print(computer.size) computer2 = Computer('huawei') computer2.price = '2000' computer2.model = 'huawei' print(computer2.price) print(computer2.model)
2.方法的创建
电脑还可以玩游戏,所以可以创建一个方法
class Computer(): def __init__(self,name,cpu,size,price): self.name = name self.cpu = cpu self.size = size self.price = price def play_game(self,name):#方法 print('我的%s,不能打%s这个游戏,因为我用的cpu是%s,价格%s'%(self.name,name,self.cpu,self.price)) c = Computer('联想','i9','17','30000') print(c.name) print(c.price) print(c.size) print(c.cpu) # print('c=',c) c.play_game('魂斗罗')
总结: 类与对象的关系: 类是对事物的总结. 抽象的概念. 类⽤来描述对象. 对象是类的实例化的结果. 对象能执⾏哪些方法. 都由类来决定. 类中定义了什么对象就拥有什么
三、面向对象的三大特征
面向对象三大特征: 封装, 继承, 多态. 只要是⾯向对象编程语⾔. 都有这三个特征.
1. 封装: 把很多数据封装到一个对象中. 把固定功能的代码封装到一个代码块, 函数, 对 象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了一个很⽜B 的函数. 那这个也可以被称为封装. 在面向对象思想中. 是把一些看似⽆无关紧要的内容 组合到一起统一进行存储和使用. 这就是封装.
2. 继承: 子类可以自动拥有父类中除了私有属性外的其他所有内容. 说白了, 儿⼦可以 随便用爹的东西. 但是朋友们, 一定要认清楚⼀个事情. 必须先有爹, 后有⼉子. 顺序不 能乱, 在python中实现继承非常简单. 在声明类的时候, 在类名后面添加一个小括号, 就可以完成继承关系. 那么什么情况可以使⽤用继承呢? 单纯的从代码层面上来看. 两 个类具有相同的功能或者特征的时候. 可以采用继承的形式. 提取一个父类, 这个⽗类 中编写着两个类相同的部分. 然后两个类分别取继承这个类就可以了. 这样写的好处 是我们可以避免写很多重复的功能和代码. 如果从语义中去分析的话. 会简单很多. 如
果语境中出现了了x是⼀种y. 这时, y是一种泛化的概念. x比y更加具体. 那这时x就是y的 子类. 比如. 猫是一种动物. 猫继承动物. 动物能动. 猫也能动. 这时猫在创建的时候就 有了了动物的"动"这个属性. 再比如, 白骨精是一个妖怪. 妖怪天⽣就有一个比较不好 的功能叫"吃人", 白骨精⼀出生就知道如何"吃⼈人". 此时 白骨精继承妖精.
class Yao: def chi(self): print("我是妖怪, 我天生就会吃人") class BaiGuJing(Yao): # 白骨精继承妖怪 pass bgj = BaiGuJing() bgj.chi() # 我是妖怪, 我天生就会吃⼈人 # 虽然白骨精类中没有编写chi. 但是他爹有啊. 直接拿来⽤用
3. 多态: 同一个对象, 多种形态. 这个在python中其实是很不容易说明白的. 因为我们⼀ 直在用. 只是没有具体的说. 比如. 我们创建一个变量a = 10 , 我们知道此时a是整数 类型. 但是我们可以通过程序让a = "alex", 这时, a又变成了字符串类型. 这是我们都 知道的. 但是, 我要告诉你的是. 这个就是多态性. 同一个变量a可以是多种形态. 可能 这样的程序和说法你还get不到具体什是多态. 接下来. 我们来看一个程序. 北京动 物园饲养员alex一天的工作. 从早上开始喂养猪, 中午喂哈士奇, 晚上还得喂阿拉斯加. 来我们用代码实现这样的代码:
class Baigujin: def teng(self): print('白骨精痛') class Zhizhujin: def teng(self): print('蜘蛛精痛') class Heixiongjin: def teng(self): print('黑熊精痛') class Swukong: # def dahei(self,hei): # hei.teng() # def dabai(self,bai): # bai.teng() # def dazhi(self, zhi1): # zhi1.teng() def da(self, yaojin): yaojin.teng() wukong = Swukong() zhi = Zhizhujin() wukong.da(zhi) wukong = Swukong() hei = Heixiongjin() wukong.da(hei) wukong = Swukong() bai = Baigujin() wukong.da(bai)