1. 程式人生 > >面向對象入門(封裝)

面向對象入門(封裝)

detail clas 方法 pri 調用 pytho 根據 python 構造

編程的方式:

·面向過程:根據業務邏輯從上到下壘代碼

·函數式:將某功能代碼封裝到函數中,通過調用函數來簡潔代碼

·面向對象:對函數進行分類和封裝,讓開發變得“更好、更快、更強”

面向對象編程(object oriented programming)OOP

這種編程方式的落地需要使用"類"和"對象"來實現,所以面向對象編程其實就是對"類"和"對象"的使用。

類(class)

"類"就是一個模板,模板裏可以包含多個函數,"類"中的函數叫做"方法"

對象(object)

"對象"是根據模板創建的實例,通過實例對象可以執行類中的"方法"

面向對象的三大特征:

1、封裝

2、繼承

3、多態

一、封裝

將內容封裝到某個地方,以後再去調用被封裝在某處的內容

所以,在使用面向對象的封裝特性時,需要註意兩點

·將內容封裝到某處

·從某處調用被封裝的內容

第一步,將內容封裝到某處

 1 class Foo:
 2 
 3     def __init__(self,name,age):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9  
10 
11 # 根據類Foo創建對象
12 
13  
14 
15 obj1 = Foo("Alben",18)
16 
17  
18 
19
obj2 = Foo("Nichole",30)

self 是一個形參,

·當執行obj1 = Foo("Alben" , 18)時,self = obj1

·當執行obj2 = Foo("Nichole" , 30)時,self = obj2

所以,內容被封裝到了對象obj1和obj2中,每個對象中都有name和age屬性,在內存中的對應關系:

第二步:從某處調用被封裝的內容

調用被封裝的內容時,有兩種情況:

·通過對象直接調用

·通過self間接調用

通過對象直接調用:

print(obj1.name)

print(obj2.name)

通過self間接調用:

通常,調用"類"中封裝的"方法"的時候,通常使用self間接調用——

 1 class Foo:
 2 
 3     def __init__(self,name,age):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9  
10 
11     def detail(self):
12 
13         print(self.name)
14 
15         print(self.age)
16 
17  
18 
19 obj1 = Foo("Alben",18)
20 
21  
22 
23 obj1.detail()
24 
25  

#在執行的時候,Python會將obj傳遞給參數self,即obj1.detail(obj1)。

綜上所述,對於面向對象的封裝來說,其實就是使用構造方法將內容封裝到對象中,然後通過對象直接或self間接的方式獲取封裝的內容。

練習:

在終端輸出一下內容

王順,10歲看黃片

王順,10歲擼管

王順,10歲逛窯子

熊雞雞,10歲看黃片

熊雞雞,10歲擼管

熊雞雞,10歲逛窯子

函數式:

 1 def kanhuangpian(name,age):
 2 
 3     print(name +,  + age + "歲看黃片")
 4 
 5  
 6 
 7 def luguan(name,age):
 8 
 9     print(name + ,  + age + "歲擼管")
10 
11  
12 
13 def guangyaozi(name,age):
14 
15     print(name + ,  + age + "歲逛窯子")
16 
17  
18 
19  
20 
21 name1 = "王順"
22 
23 name2 = "熊GG"
24 
25 age1 = str(10)
26 
27  
28 
29 kanhuangpian(name1,age1)
30 
31 luguan(name1,age1)
32 
33 guangyaozi(name1,age1)
34 
35  
36 
37 kanhuangpian(name2,age1)
38 
39 luguan(name2,age1)
40 
41 guangyaozi(name2,age1)

OOP式:

 1 class People:
 2 
 3     def __init__(self,name,age):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9  
10 
11     def huangpian(self):
12 
13         print("%s , %d歲看黃片!" % (self.name,self.age))
14 
15  
16 
17     def luguan(self):
18 
19         print("%s , %d歲擼管!" % (self.name,self.age))
20 
21  
22 
23     def yaozi(self):
24 
25         print("%s , %d歲逛窯子!" % (self.name,self.age))
26 
27  
28 
29 obj1 = People("王順",10)
30 
31 obj2 = People("熊GG",10)
32 
33  
34 
35 obj1.huangpian()
36 
37 obj1.luguan()
38 
39 obj1.yaozi()
40 
41  
42 
43 obj2.huangpian()
44 
45 obj2.luguan()
46 
47 obj2.yaozi()

面向對象入門(封裝)