目录 面向对象编程 类 如何定义类: 定义类的语法: 在定义类发生的事情: 类的操作 查 改 增 删 对象 如何产生对象: 名称空间的产生: 在类内部定义 __init__ 函数 调用类发生的事情
目录
- 面向对象编程
- 类
- 如何定义类:
- 定义类的语法:
- 在定义类发生的事情:
- 类的操作
- 查
- 改
- 增
- 删
- 对象
- 如何产生对象:
- 名称空间的产生:
- 在类内部定义
__init__
函数 - 调用类发生的事情
- 查看类和对象的名称空间
- 对象与类的查找顺序
- 对象的绑定方法
- 类内部的函数:
- 在python中一切皆为对象
面向对象编程
核心是对象二字,对象是特征与技能的结合体
优点:可扩展性强
缺点:编程的复杂度要高于面向过程
类
对象是特征与技能的结合体,类是一系列对象相同的特征与技能的结合体
如何定义类:
先定义类,后调用类创造对象
定义类的语法:
class 类名: 对象相同的特征 对象相同的技能 # class:用来定义类的,class后跟的是类名 # 类名:类的名字,用来创造对象的。 # 注意:类名必须要准寻驼峰命名法,python在定义变量与函数时不推荐使用,但在定义类时推荐使用
在定义类发生的事情:
类在定义时,会发生一个空的名称空间。
会把类内部所有名字,扔进类的名称空间。
注意:类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码
类的操作
# 学生类 class OldboyStudent: # 特征 school = 'oldboy' print('tank is handsome...') # 技能 def learn(self): print('learn python...') def choose_course(self): # self = None print('choose_course ....')
查
print(OldboyStudent.school) # oldboy
改
OldboyStudent.school = 'oldgirl' print(OldboyStudent.school)
增
# print(OldboyStudent.address) # 报错,特征也称之为属性 OldboyStudent.address = '上海' print(OldboyStudent.address)
删
del OldboyStudent.address print(OldboyStudent.address)
对象
对象是特征与技能的结合体
如何产生对象:
''' 语法: 类名 + () 调用类产生的对象 '''
名称空间的产生:
对象的名称空间,在调用类时产生
在类内部定义__init__
函数
为对象初始化某些属性。
会在调用类时,自动触发该函数
class OldboyStudent: # 若__init__中有self以外的参数,调用类时必须在括号内传入参数。 def __init__(self,x,y,z): # self-->就是对象本身 # print(self, x, y, z) # print('此处时__init__。。。。') # 给对象添加特征的方式二: self.name = x self.age = y self.sex = z # 特征 school = 'oldboy' # print('tank is handsome...') # 技能 def learn(self): print('learn python...') def choose_course(self): # self = None print('choose_course ....') stu1 = OldboyStudent('志贵', 17, 'female') # OldboyStudent()---> 学生对象 # 给对象添加属性的方式一: # print(stu1.name) # stu1.name = '高峰峰' # stu1.age = 93 # stu1.sex = 'female' # print(stu1.name, stu1.age, stu1.sex)
调用类发生的事情
首先会产生一个空的对象,就是产生“对象的名称空间”
会自动触发
__init__
会把对象自身以及括号内的参数一并传给
__init__
函数总结:调用类会产生一个对象,调用类的过程叫做类的实例化,产生的对象称之为类的一个实例
查看类和对象的名称空间
# 查看类的名称空间 print(OldboyStudent.__dict__) # 查看对象的名称空间 # print(stu1.__dict__) print(stu1.name,stu1.school)
对象与类的查找顺序
- 对象.属性 ,若对象本身有,则优先查找对象自己的。
- 若对象本身没有,则去类里面找,若类没有,则报错
对象的绑定方法
类内部的函数:
主要是给对象用的:
由类来调用类内部的函数,该函数只是一个普通的函数,
普通函数需要激光割参数就得传入几个参数
由对象来调用称之为对象的绑定方法,
不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中
重点:对象的绑定方法,是有对象来调用的,
特殊之处就是把对象当做第一个参数传入该方法中