面向过程与面向对象 面向过程编程:逻辑清晰,复杂问题流程化简单化;可拓展性差 面向对象编程:可扩展性高;编写程序复杂程度远高于面向过程编程 对象 对象是特征和技能的结合
面向过程与面向对象
面向过程编程:逻辑清晰,复杂问题流程化简单化;可拓展性差
面向对象编程:可扩展性高;编写程序复杂程度远高于面向过程编程
对象
对象是特征和技能的结合体
类
类是一系列对象相同的特征与技能的结合体
类的定义
class Student: #类名推荐使用驼峰体 '''学生类''' school = 'oldboy' def learn(self): print('is learning···') #查看类的名称空间 print(Student.__dict__)
定义类时发生的事情:
类在定义时,会产生一个空的名称空间
把类内部的所有变量、函数等,放入类的名称空间中
注意:类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码
类的实例化
stu1 = student() #对象的名称空间,在调用类时产生
初始化属性
class Student: #类名推荐使用驼峰体 '''学生类''' school = 'oldboy' def __init__(self, name, age): #在调用类时,自动触发__init__,self就是对象本身 self.name = name self.age = age def learn(self): print('is learning···') stu1 = Student('slk', 18) print(stu1.__dict__) #查看对象的名称空间
调用类发生的事情:
- 产生一个空的对象,即产生对象的名称空间
- 自动触发init
- 把对象本身以及括号内的参数一并传给init函数
总结:调用类会产生一个对象,调用类的过程叫做类的实例化,产生的对象称之为类的一个实例
对象与类的查找顺序
对象.属性 --> 类.属性 -->报错
对象绑定方法的特殊之处
- 由类来调用类内部的函数,该函数只是一个普通的函数
- 由对象来调用称之为对象的绑定方法,特殊之处就是把对象当作第一个参数(self)传入该方法中
python中一切皆对象
#以列表的append()方法举例 lis = [1,2,3] lis.append(4) #list.append(lis, 4) print(lis)