一、面向对象 & 面向过程
1、面向过程(流水线式思维):
- 优点:程序复杂度较低,依据执行步骤顺序编写代码即可
- 缺点:代码复用性差,前后逻辑耦合度要高
- 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等
2、面向对象(上帝式思维):
- 优点:可扩展性高,对程序某处的更改会反映到全局
- 缺点:可控性差,不如面向对象式编程可以准确预测程序执行结果
- 应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等
二、类和对象
定义:在python中,用变量表示属性,用函数表示方法,因而具有相同属性和方法的一类事物就是‘类’,对象则是这一类事物的具体体现
1、类
①声明类
②类的作用:
- 属性引用:类名.属性名
- 方法调用:类名.方法名(对象名) / 对象名.方法名()
- 实例化:类名加括号就是实例化,会自动触发init函数的运行,可以用它来为每个实例定制自己的特征。
- 实例化的过程本质:类——>对象的过程
- self:在实例化过程中自动将对象(实例)自身传递给init方法的第一个参数,约定俗成将这个参数写作self
- 特殊的类属性:
1 类名.__dict__:查出的是一个字典,key为属性名,value为属性值
2 类名.__name__# 类的名字(字符串)
3 类名.__doc__# 类的文档字符串
4 类名.__base__# 类的第一个父类(在讲继承时会讲)
5 类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
6 类名.__dict__# 类的字典属性
7 类名.__module__# 类定义所在的模块
8 类名.__class__# 实例对应的类(仅新式类中)
2、对象
①定义:对象是类的具体体现,即实例
②作用:属性调用、方法调用(方法也称作动态属性,所以也可以归为一类)
3、对象之间的交互
1 class Dog():
2 def __init__(self,name,blood,aggr,sex):
3 self.name = name
4 self.blood = blood
5 self.aggr = aggr
6 self.sex = sex
7
8 def bite(self,person):
9 person.blood -= self.aggr
10 print('