一、類的例項化:呼叫類產生物件的過程稱為類的例項化,例項化的結果是一個物件,或稱為一個例項
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)