一.面向对象。
1)面向对象的核心是以对象为中心.
优点:可扩展性强
缺点:编程的复杂程度高于面向过程
2)面向过程的核心是一切以事务的流程为核心
优点: 负责的问题流程化, 编写相对简单
缺点: 可扩展性差
面向对象和面向过程的对比:
如果写一些比较小的程序用面向过程.
程序很复杂. 很庞大建议用面向对象.
类与对象的关系:类是对事物的总结,抽象的概念. 类用来描述对象. 对象是类的实例化的结果. 对象能执行哪些方法.
都由类来决定. 类中定义了什么. 对象就拥有什么 .
如果是写个简单的程序,直接用面向过程会更简便些,如果是复杂的程序,使用面向对象来写代码会更容易些,而且代码更加清晰.
3)面向对象的三大特征:
面向对象三大特征: 封装, 继承, 多态. 只要是面向对象编程语言. 都有这三个特征.
封装:
1. 对属性的封装(__init__())
self.xxx = xxx
2. 对方法和功能的封装
把很多数据封装到一个对象中.把固定功能的代码封装到一个代码块,函数,对象,打包成模块.
这都属于封装的思想. 具体的情况具体分析.比如,你写了了一个很牛B的函数.
那这个也可以被称为封装.在面向对象思想中. 是把一些看似⽆无关紧要的内容 组合到一起统一进行存储和使用. 这就是封装.
继承:
子类可以自动拥有父类中除了私有属性外的其他所有内容.说白了,儿子可以随便用爹的东西.但是,一定要认清楚一个事情.
必须先有爹, 后有儿子.顺序不能乱.在python中,一个类可以同时继承多个父类,如果有两个父类有重复的,
优先取离自己近的,就是第一个父类
语法:
在类名后面添加一个小括号, 就可以完成继承关系.
多态:
同一个对象, 多种形态.
程序具有超高的可扩展性.面向对象思想的核心与灵魂. python自带多态.
上代码!
class Car: # 类名首字母大写, 严格遵守驼峰命名规范 # __init__方法是一个特殊的方法. 初始化方法. (构造方法) # 在创建对象的时候会自动的调用__init__() # 对象就是self, 对属性的封装 def __init__(self, color, pai, pailiang): # init初始化方法. 在创建对象的时候. 默认执行这个函数 self.color = color #如果在这里直接写成红色,那么所有的车,都会是红色.不指定的话就是,对象填啥色就是啥色. self.pai = pai self.pailiang = pailiang def pao(self): # self是自动传递的. 不用管它 print("%s我的车能跑" % self.color) # self.color def jump(self): #在类中写的函数,叫方法 print("you jump, I jump") c = Car("红色", "京A88888","555L") # 创建Car类型对象. 此时self参数不需要我们管 c2 = Car('蓝色', "京B66666", "1.6T") print(c.color) print(c2.color) c.pao() # 车c跑 c2.pao()
二、类.
1)类与对象的关系:类是对xxx事物的归类.
__init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装. def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象. pass 对象是xx类型的一个具体
2)创建类:
class 类名: def __init__(self,属性,属性,属性): # 初始化方法. 又被成为构造方法 self.属性 = 值 self.属性 = 值 self.属性 = 值 def fangfa(self): 方法体(实质就是函数体,也可以有return)
3)创建对象:
变量 = 类名() # 实例化 <-> 创建对象 变量.属性 # 访问对象的属性信息 变量.方法() # 访问类中的方法