面向对象
面向过程核心:过程(即流水线思维)
优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可
缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身
应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等
核心:对象(上帝思维)
优缺点
优:可扩展性好,易于理解代码逻辑
缺:可控性差
使用场景:需求经常变化的软件
用户层
互联网应用
企业内部应用软件
游戏
名词
类
具有相同特征的一类事物
对象/实例
实例
实例化
类——>对象的过程
类的相关知识
作用:
属性引用
类名.属性
实例化
对象名= 类名(参数)
对象
查看属性:对象.属性名
调用方法:对象.方法名()
关于self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,但是正常人都不会这么做
查看类属性:
1、dir(类名)
结果是一个字典
类名.__dict__
对象的相关知识
对象是关于类而实际存在的一个例子
对象/实例只有一种作用:属性引用
对象之间的交互
class Person: # 定义一个人类 role = 'person' # 人的角色属性都是人 def __init__(self, name, aggressivity, life_value): self.name = name # 每一个角色都有自己的昵称; self.aggressivity = aggressivity # 每一个角色都有自己的攻击力; self.life_value = life_value # 每一个角色都有自己的生命值; def attack(self,dog): # 人可以攻击狗,这里的狗也是一个对象。 # 人攻击狗,那么狗的生命值就会根据人的攻击力而下降 dog.life_value -= self.aggressivit
class Dog: # 定义一个狗类 role = 'dog' # 狗的角色属性都是狗 def __init__(self, name, breed, aggressivity, life_value): self.name = name # 每一只狗都有自己的昵称; self.breed = breed # 每一只狗都有自己的品种; self.aggressivity = aggressivity # 每一只狗都有自己的攻击力; self.life_value = life_value # 每一只狗都有自己的生命值; def bite(self,people): # 狗可以咬人,这里的狗也是一个对象。 # 狗咬人,那么人的生命值就会根据狗的攻击力而下降
dog.life_value -= self.aggressivit