一、类的实例化:调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或称为一个实例
1 class People: 2 def __init__(self,name,age,sex): 3 self.name=name 4 self.age=age 5 self.sex=sex 6 7 def run(self): 8 print('%s is running' %self.name)
实例化做了三件事
1、先产生一个空对象
2、自动触发类内部__init__函数的执行
3、将空对象,以及调用类括号内传入的参数,一同传给__init__,为对象定制独有的属性
obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male')
会产生对象的名称空间,如何查看
print(obj.__dict__)
二;对象的操作
1 print(obj.name) #obj.__dict__ 2 obj.education='哈佛' 3 del obj.name 4 obj.age=19 5 print(obj.__dict__)
三:对象属性的查找顺序:先找对象自己的名称空间---->类的名称空间
1 class People: 2 x=1 3 def __init__(self,name,age,sex): 4 self.name=name 5 self.age=age 6 self.sex=sex 7 8 def run(self): self=obj 9 print('%s is running' %self.name) obj.name 10 11 obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male') 12 obj1=People('egon1',18,'male') #People.__init__(obj,'egon',18,'male') 13 obj2=People('egon2',18,'male') #People.__init__(obj,'egon',18,'male')
1、类的数据属性:是给对象用的,而且直接共享给所有对象用的,内存地址都一样
1 print(People.x) 2 People.x=11111 3 4 print(id(People.x),People.x) 5 obj.x='obj================》' 6 print(id(obj.x),obj.x) 7 print(id(obj1.x),obj1.x) 8 print(id(obj2.x),obj2.x)
2、类的函数属性:也是给对象用,但是绑定给对象用的,绑定到不同的对象就是不同的
绑定方法,内存地址都不一样,但其实只想都是同一个功能
1 print(People.run)
>>> <function People.run at 0x00000226E7C78A60> 2 People.run(123123) 3 People.run(obj) 4 5 print(obj.run) 6 print(obj1.run) 7 print(obj2.run)
四:绑定方法的特殊之处:
1、 绑定给谁就应该由谁来调用,
2、谁来调用就会把谁当做第一个参数传入
1 class People: 2 x=1 3 def __init__(self,name,age,sex): 4 self.name=name 5 self.age=age 6 self.sex=sex 7 8 def run(self): self=obj 9 print('%s is running' %self.name) obj.name 10 11 def f1(): 12 print('from f1') 13 14 def f2(self): 15 pass 16 17 obj=People('egon',18,'male') People.__init__(obj,'egon',18,'male') 18 obj1=People('egon1',18,'male') People.__init__(obj,'egon',18,'male') 19 obj2=People('egon2',18,'male') People.__init__(obj,'egon',18,'male') 20 21 obj.run() 22 obj1.run() 23 obj2.run() 24 25 print(People.f1) 26 People.f1() 27 print(obj.f1) 28 obj.f1() People.f1(obj)
五:一切皆对象:在python3中统一了类与类型的概念,类即类型
1 l=list([1,2,3]) 2 print(type(l)) 3 print(type(obj)) 4 l.append(4)