目录
核心是 过程 二字, 过程指的是解决问题的步骤,即先干什么再干什么
基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式。
优点:
将复杂的问题流程化,进而简单化
缺点:
牵一发而动全身,可扩展性差
核心是 对象 二字,对象指的是 特征(属性/变量)与技能(方法/函数)的结合体。基于该编程思想编写程序,就好比在创造世界,一种上帝式的思维方式。
优点:
可扩展性强。(只需要关注对象能干什么拥有什么特征,无需关注他做事情的步骤)
缺点:
编写的复杂难度较高于面向过程编程思想。
注意: 在生产开发中,两种编程思想相辅相成,缺一不可!
类指的是类型类别。
对象是 特征与技能 的结合体, 类是一系列对象相同的 特征与技能 的结合体。
要定义类: 先抽象,再定义。
先有对象,然后再有类。
先定义类,后调用用类产生对象。
- 对象1:
- 特征:
- name: hcy
- age: 84
- sex: female
- school = 'oldboy'
- 技能:
- 漂泊十年无需用一毛
- 学习
- 对象2:
- 特征:
- name: JP
- age: 95
- sex: male
- school = 'oldboy'
- 技能:
- 澳门赌场上线首席发牌师
- 学习
- 学生类:
- 相同的特征
- school = 'oldboy'
- 相同的技能
- 学习
class 类名:
school = 'oldboy'
def learn(self):
print('learning...')
- 调用类产生对象
语法: 类名 + () 调用
- 调用类的过程: 称之为类的实例化,产生的对象称之为类的一个实例。
- 调用类时发生的事情:
1) 产生一个空对象的名称空间
2) 自动触发类内容__init__方法的执行。
3) 会将对象本身当做第一个参数,以及调用类括号内所有的参数并传给__init__。
1.会先从对象自己的名称空间中查找
2.对象中没有,去类中查找。
- 由类来调用的方法,就是一个普通函数,函数需要几个参数,就得传入几个参数。
- 由对象来调用,就是一个对象的绑定方法,由不同的对象调用就会绑定给不同的对象,称之为对象的绑定方法。
比如: python的八大数据类型都是类
定义数据类型的值时,内部自动调用响应的类,然后产生对象。
需求:
- 先有人类,狗类,调用人类与狗类,产生两个对象、
- 一个是人对象,一个是狗对象,人狗互咬。
class People:
def __init__(self, name, life, arg):
self.name = name
self.life = life
self.arg = arg
# 咬
def bite(self, dog_obj):
dog_obj.life -= self.arg
class Dog:
def __init__(self, name, life, dog_type, arg):
self.name = name
self.life = life
self.dog_type = dog_type
self.arg = arg
# 咬
def bite(self, peo_obj):
peo_obj.life -= self.arg
继承是一种新建类的方式,新建的类称之为子类或派生类,
继承的类是父类,也称之为基类或超类。
减少代码冗余(减少重复代码)
- 确认继承关系
- 先抽象,再继承
- 类是抽取一系列对象相似的部分
- 父类是抽取一系列类相似的部分
- 父类
- 子类
- 语法:
class 子类(父类):
1.先从对象的名称空间中查找
2.若对象中没有,去子类中查找
3.若子类中没有,去父类中查找
派生: 子类继承父类,派生出自己的属性和方法。
- 直接调用父类中__init__(self)
- super().__init__()
- 新式类
- 所以继承object的类,以及子孙类都称之为新式类。
- 经典类
- 没有继承object的类,都是经典类。
经典类: 深度优先
新式类: 广度优先
类.mro()
super严格依赖mro继承序列的顺序原文:https://www.cnblogs.com/WQ577098649/p/11947049.html