day19-面向过程和面向对象、类
面向过程与面向对象
面向过程编程:逻辑清晰,复杂问题流程化简单化;可拓展性差
面向对象编程:可扩展性高;编写程序复杂程度远高于面向过程编程
对象
对象是特征和技能的结合体
类
类是一系列对象相同的特征与技能的结合体
类的定义
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)