python之路--day19-对象
1,调用类发生了那些事?(实例化)
1,首先产生一个空对象
2,然后自动触发类内部的__init__函数
3,最后将空对象连同调用类时括号内的参数一起传给__init__函数,为对象定制独有属性
注意:定义类里面的函数时,这些函数本质上都是为了给对象使用的,函数默认的self参数,就是用来接收对象本身的。
class OldboyStudent: school='oldboy' def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex #self=stu1 def learn(self): print('%s is learning' %self.name) def choose(self,course): print('%s is choosing %s' %(self.name,course))
2,调用类时,会产生类的对象,这个对象也称为类的一个实例,调用类的过程也称为类的实例化
stu1=OldboyStudent('李三胖',18,'male') #OldboyStudent.__init__(stu1,'李三胖',18,'male')
3,类内部定义的变量是给所有的对象共享的,所有对象调用的类内部变量都是指向的同一个内存地址
# print(id(stu1.school)) # print(id(stu2.school)) # print(id(OldboyStudent.school))
4,类内部定义的函数,类可以使用,但类来用的时候就是一个普通函数,普通函数有几个参数就需要传几个参数
# print(OldboyStudent.learn) # OldboyStudent.learn(123)
5,类内部定义的函数,其实是给对象使用的,而且是绑定给对象用,绑定给不同的对象就是不同的绑定方法
# print(stu1.learn) # print(stu2.learn)
绑定方法的特殊之处在于,谁来调用,就会将谁当做第一个参数自动传入
# stu1.learn() # OldboyStudent.learn(stu1) # stu2.learn() # OldboyStudent.learn(stu2)
对象属性的操作
obj . 属性名 = 用来修改或者添加 对象属性
obj . 属性名 查看对象属性
del 属性名 删除属性
对象属性的查找顺序:先找对象自己的名称空间----再找类的名称空间
一起皆对象:在python3中统一了类和类型的概念,类就是类型