1 什么是面向对象
面向对象是一种编程思想,是前辈们的经验,可以指导程序员如何写出更好的程序
核心是对象,程序就是一系列的对象的集合,程序员负责调度控制这些对象完成任务
例如;
现在我要将大象装进冰箱中
我可以找一个会这项技能的人来装大象
我只需要负责找到会这项技能的人
总结;在面向对象的过程中,程序员的角度发生了改变,从原来的执行者,变为了指挥者
注意一点,对象不是凭空产生的,是需要我们自己设计的
2优点
1 可扩展性强(比如,如果添加功能,可以不会影响其他功能)
2 重用强(可以一直重复利用)
3 灵活性强()
3 缺点
1 程序的复杂度提高了
2 结构无法预知了
面向对象,面向过程的使用场景
面向对象的使用场景;对于一些扩展性强的程序,直接面向对象的
面向过程的使用场景;对于一些扩展性差的程序,比如,linex内核
类 和对 象
1 什么是类
内就是,内型,内别,是一种抽象的概念,是一系列具备相同特征和相同行为的对象结合
2 什么是对象
就是具体存在的某个事物,具备自己独特的特征,和行为,对象就是特征和技能的结合体
3 类和对象的关系
类包含对象,而对象是属于某个类的
在生活中,是先有对象,再有类的
在程序中是现有类,在有对象的
创建类和对象
创建类的格式语法
class 类的名字(需要建名知意,大驼峰命名规则):
# 类的属性,即变量赋值
# 类的技能,即函数
创建对象的格式语法
class Dog:
pass
# 创建了一个对象
dog = Dog()
属性的写法
"""
属性是可以写在类中
写在类中的属性是公用的
属性也是可以写在对象中的
写在对象中的属性是对象独有的
如果类中和对象中都有一样的属性,先访问对象自身的,如果没有就访问类中的,如果都没有就报错
"""
# 例如
class Dog:
# 类属性,公用的
cloler = red
# 创建一个对象
dog = Dog()
# 写对象属性
dog.name = "二哈"
dog.read = "黑白"
属性的增删改查
增加属性;
对象名.属性名 = 属性值
删除属性;
关键字 del 对象名.属性名
修改属性;
重新赋值给属性名(将原来属性值1,改为属性值2)
对象名.属性名1 = 属性值1
对象名.属性名1= 属性值2
查看属性
访问对象的所有属性
print(对象.__dict__)
访问对象的类信息
print(对象.__class__)
init 方法
叫做初始化方法,本质就是一个函数
特点1
当实例化对象时,会自动执行init方法
特点2
会自动将对象作为第一个参数传入,参数名为self,self可以是别名
class Dog:
def __init__(self,name,age):
self.name = name
self.age = age
dog1 = Dog("二哈",12)
dog2 = Dog("金毛",12)
对象的精髓就是将数据,和处理数据的函数整合到一起,我们拿到的对象就同时拿到了数据,和处理数据的函数
注意;初始化方法不仅仅用来赋值,还可以执行其它代码
绑定方法
对象的绑定方法
在默认的情况下类中的方法就是对象绑定方法
就是在调用函数时,传入的第一个参数就是调用它的对象
如果用类来调用改方法,有几个参数就得传几个参数
class Dog:
def __init__(self,name.age):
self.name = name
self.age = age
def eat(self):
print("eat")
类绑定方法
类绑定方法用@classmethod来装饰
什么时候绑定给对象:当函数逻辑需要访问对象中的数据时
什么时候绑定给类:当函数逻辑需要访问类中的数据时
非绑定方法
或叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据
语法:@staticmethod
不常用