Python 14 面向对象一

初识面向对象

1. 面向对象和面向过程

  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自带多态

原文地址:https://www.cnblogs.com/NATO/p/9923082.html