面相对象
昨天介绍了什么是对象和类
对象就是特征和技能的结合体
类就是一系列相似对象的特征和技能的结合体
昨天我们只讲解了类的定义阶段 在定义阶段会立刻执行函数体内的代码,然后将产生的名字存放在类的名称空间
class OldboyStudent: school='Oldboy' def learn(self): print('learn...')
今天详细介绍了对象和类的调用阶段
对象的定义:
每个对象都有它相似的特征 也有它不一样的地方 如 名字 年龄等个人信息 怎样可以在类的调用阶段 区分出拥有一些相似特征和技能的对象 我们就要用到__init__方法具体如下
def __init__(self,name,age): self.name=name self.age=age
class OldboyStudent: school='Oldboy' def __init__(self,name,age): self.name=name self.age=age def learn(self): print('learn...')
调用类的时候触发执行
调用阶段会发生的三件事:
1.首先产生一个空对象
2.会自动触发类内部的__init__函数
3.然后将产声的空对象连同括号内的参数一同传给___init__
class OldboyStudent: school='Oldboy' def __init__(self,name,age): self.name=name self.age=age def learn(self): print('learn...') ojb=OldboyStudent('egon',18) print(ojb.name)
调用类--->产生对象,调用类的过程也称为类的实例化
类的数据属性:是给对象用的,而且直接共享给所有对象用,内存地址都一样
class OldboyStudent: school='Oldboy' x=1 def __init__(self,name,age): self.name=name self.age=age def learn(self): print('learn...') ojb=OldboyStudent('egon',18) print(id(ojb.x)) print(id(OldboyStudent.x))
1699114464
1699114464
类的函数属性:也是给对象用的,绑定到不同的对象就是不同的绑定方法,内存地址都不一样 但是指向相同的功能
class OldboyStudent: school='Oldboy' x=1 def __init__(self,name,age): self.name=name self.age=age def learn(self): print('learn...') obj=OldboyStudent('egon',18) obj1=OldboyStudent('alex',20) print(obj) print(obj1) <__main__.OldboyStudent object at 0x000002290EBA8F60> <__main__.OldboyStudent object at 0x000002290EBA8FD0>
绑定方法的特殊之处:
1.绑定给谁就应该谁来调用
2.谁来调用就会把谁当作第一参数传入
一切皆对象:在python3中统一了类型与类的概念,类即类型
class OldboyStudent: school='Oldboy' x=1 def __init__(self,name,age): self.name=name self.age=age def learn(self): print('learn...') print(OldboyStudent) l=[1,2,3] print(type(l)) <class '__main__.OldboyStudent'> <class 'list'>