1. 程式人生 > >python函數的面向對象——面向對象設計

python函數的面向對象——面向對象設計

ret 編號 -s 類型 來講 代碼 family 問題 post

通過幾個函數式編號演進,理解面向對象設計

def01.py

 1 dog1 = {
 2     name:元昊,
 3     gender:,
 4     type:藏獒
 5 }
 6 dog2 = {
 7     name:李李,
 8     gender:,
 9     type:臘腸
10 }
11 
12 def jiao(dog):
13     print(一條狗[%s],汪汪%dog[name])
14 
15 def yaoren(dog):
16     print(一條狗[%s]正在咬人%dog[
type]) 17 18 jiao(dog1) 19 yaoren(dog1) 20 yaoren(dog2)

def02.py

 6 
 7 def dog():
 8     def jiao(dog):
 9         print(一條狗[%s],汪汪%dog[name])
10 
11     def yaoren(dog):
12         print(一條狗[%s]正在咬人%dog[type])
13 
14     dog1 = {
15         name: 元昊,
16         gender: ,
17         
type: 藏獒, 18 jiao:jiao, 19 yaoren:yaoren 20 } 21 return dog1 22 23 d1 = dog() 24 d1[jiao](d1)

def03.py

 6 
 7 def dog(name,gender,type):
 8     def jiao(dog):
 9         print(一條狗[%s],汪汪%dog[name])
10 
11     def yaoren(dog):
12         print(一條狗[%s]正在咬人%dog[type
]) 13 14 dog1 = { 15 name: name, 16 gender: gender, 17 type: type, 18 jiao:jiao,#內部函數 19 yaoren:yaoren#內部函數 20 } 21 return dog1#因為作用域的問題,所以一定要用內部的return 返回jiao,yaoren的函數,才能被外部調用 22 23 d1 = dog(張明,,臘腸)

24 d1[jiao](d1)#引入返回的那個數組d1 ,

def04.py

 6 
 7 def dog(name,gender,type):
 8     def jiao(dog):
 9         print(一條狗[%s],汪汪%dog[name])
10 
11     def yaoren(dog):
12         print(一條狗[%s]正在咬人%dog[type])
13 
14     def init(name,gender,type):
15         dog1 = {
16             name: name,
17             gender: gender,
18             type: type,
19             jiao:jiao,#內部函數
20             yaoren:yaoren#內部函數
21         }
22         return dog1
23 
24     return init(name,gender,type)
25 
26 d1 = dog(張明,,臘腸)
26 print(d1[‘name‘],d1[‘gender‘])
27 d1[jiao](d1)#引入返回的那個數組d1 ,

# 那麽一個函數,
# 就是給定不同屬性,設置屬性到它內部,
# 並且它內部的函數使用了這些屬性,完成了新的動作,
# 通過返回方法至一個字典當中,讓外部調用這個方法(屬性和方法都需要讓外部去訪問,在字典類型當中來講,是平等的),
# 即完成了所謂的【面向對象】

# 對象在不描述之前什麽都不是。
# 對象就是需要描述它的動作和特征,才能去定義它。比如:人,長什麽樣,能做什麽;燈泡,是什麽樣,能做什麽。

# 類是抽象的,只有屬性和方法。 dog()函數就是
# 但對象是經過動作和特征的定義的。d1 定義後,就是一條狗了
# 這就是面向對象設計

類就像模板,定義後就是一個對象了。

由 類-----產生-----對象的過程叫做實例化(實例=對象)

在python當中,沒有要求你一定要寫面向對象的代碼。用面向對象的語言,和一個程序的設計是面對對象的,兩者無任何關系。

你寫的程序是不是面向對象的,和你用的語言是不是面向對象的無關系!面向對象設計,只不過是函數/過程式編程的演進。關鍵在於面向對象的設計思路。

python函數的面向對象——面向對象設計