面向对象基础
面向过程:
核心是过程二字,过程指的是结局问题的步骤,设计一条流水线,机械式的思维方式,
根据业务逻辑从上到下写代码
优点:复杂的问题流程化,进而简单化
缺点:可扩展性差
面向对象:
核心就是对象二字
类:类是一系列对象的特征与相似的结合体
对象:特征与技能的集合体
将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程
优点:可以扩展性强,
缺点:编程复杂度高
引用场景:用户需求经常变化,互联网应用,游戏,企业内部应用
什么是类:类就是一系列对象的特征与技能的结合体
强调:站在不同的角度,得到的分类是不同的
类的构成
类(Class) 由3个部分构成
- 类的名称:类名
- 类的属性:一组数据
- 类的方法:允许对进行操作的方法 (行为)
类的抽象
如何把日常生活中的事物抽象成程序中的类?
拥有相同(或者类似)属性和行为的对象都可以抽像出一个类
方法:一般名词都是类(名词提炼法)
定义类,
calss luffystudent: school = 'luffycity' # 数据属性 类在定义的时候就会执行 def learn(self): # 函数属性 print('is learning') def eat(self): print('is eating')
2后产生对象
python2 新式类,经典类
- 经典类,没有继承object的类,以及它的子类都称之为经典类
- 新式类,继承object的类,以及它的子类都称之为新式类
python3 都是新式类,一个类没有继承object类,其实是默认继承
- 新式类,有一个内置方法.__mro__( ) 广度优先
- 经典类,没有mro方法,一条道走到黑,深度优先
类的基本操作
- 查看类的名称空间
print(luffyStudent.__dict__) #print(luffyStudent.__dict__['school']) - 查
print(luffystudent.school) # == luffyStudent.__dict__['school'] - 增
luffy.student.county = "China" - 删
del luffystudent.county - 改
luffystudent.school = 'luffycity'
对象的基本操作
__init__方法用来为对象定制自己独有的特征,实例化对象的时候自动调用
- 实例化对象
stu = luffystudent() - 查
print(stu.__dict_)
print(stu.school) - 改
stu.school = "安富中学" - 删
del stu.school - 增
shu.class_name = "python开发"
绑定方法
类中的数据属性,是所有对象共有的
函数对象是绑定给对象的
类中的函数属性:是绑定给对象使用的,绑定到不同的对象是不同的绑定方法,会把对象本身当做第一个传入,传给self
类中定义的函数,是绑定给对象使用的