类和对象
目录
一、类
1、什么是类
类:是一系列 具有相同特征与技能的对象 的结合体
2、如何定义类
先定义类,然后调用类创造对象
语法:
def 函数名(): # 定义函数
pass
class 类名: # 定义类
定义特征:一些变量
定义技能:一些函数
class:用来定义类的关键字,class后面跟的是类名。
类名:类的名字,用来调用类创造对象的。
注意:类名必须遵循驼峰命名法。
3、在定义类时发生的事情
- 类在定义时,会产生一个空的名称空间。
- 解释器会把类内部所有名字,都扔进类的名称空间中。
注意:类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码。
二、对象
1、什么是对象
对象:特征与技能的结合体
调用类产生对象时,名称空间怎么产生?
- 类的名称空间在类的定义阶段就已经产生了
- 对象的名称空间在调用类时产生
2、如何产生一个对象
语法:
# 类名+() 调用类 生产对象
# 可以将生产出的对象赋给一个变量
class OldboyStudent:
school = 'oldboy'
print('类已经运行')
def learn(self):
print('learn python')
stu1 = OldboyStudent() # 产生了一个学生对象 拥有类中的所有变量和函数
问题是这样定义出来的对象,所有的特征和技能是相同的
我们可以通过 初始化函数 解决这个问题
__init__:初始化函数
若__init__中有self以外的参数,调用类时必须在括号内传入参数
这样可以给对象添加特征参数
class OldboyStudent:
school = 'oldboy'
print('类已经运行')
def __init__(self,x,y,z):
self.name = x
self.age = y
self.sex = z
def learn(self):
print('learn python')
3、调用类时发生的事情
- 首先会产生一个空的对象,即产生“对象的名称空间”。
- 会自动触发__init__。
- 会把对象本身以及括号内的参数一并传给__init__函数。
总结:调用类会产生一个对象,调用的过程叫做类的实例化,产生出来的对象称之为类的一个实例。
三、对象与类的查找顺序
对象.属性
- 若对象本身有,则优先查找对象自己的
- 若对象本身没有,则去类里找
- 若类也没有,则报错
四、对象绑定方法的特殊之处
类内部定义的函数,被不同的对象调用,意义也不一样。
-
由类来调用类内部的函数,该函数只是一个普通的函数,
普通函数需要接受几个参数就要传入几个参数
-
由对象来调用类内部的函数,称之为对象的绑定方法,
不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中。
对象的绑定方法,是由对象来调用的。
绑定方法的特殊之处就在于把对象本身当做第一个参数传入该方法中。
绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
五、python中一切皆对象
所有数据类型,全是类造出来的对象