總結一下:
面向過程編程:根據業務邏輯從上到下的寫代碼-----就是一個project寫到底,重復利用性比較差
函數式:將某些特定功能代碼封裝到函數中------方便日后調用
面向對象:對函數進行分類封裝,使開發更快捷更靈活
面向過程編程:
1 name = "mac" 2 age = 15 3 sex = 'male' 4 #...... 5 print("%s's %s,%d years old!" %(name,sex,age))
函數式:
1 def name(name): 2 print('name is %s' %name) 3 def age(age): 4 print('age is %d' %age) 5 def sex(sex): 6 print('sex is %s' %sex) 7 8 name('mac') 9 age(22) 10 sex('male')
面向對象:
一、封裝
封裝,顧名思義就是將內容封裝到某個地方,以后再去調用被封裝在某處的內容。
所以,在使用面向對象的封裝特性時,需要:
- 將內容封裝到某處
- 從某處調用被封裝的內容
class Message(): def __init__(self,name,age): self.name = name self.__age = age def get_name(self): return self.name def get_age(self): return self.__age message = Message('MAC',23) print(message.get_name(),message.get_age())
二、繼承
繼承,面向對象中的繼承和現實生活中的繼承相同,即:子可以繼承父的內容。
1 class Parent(object): 2 def __init__(self,name,age,sex): 3 self.name = name 4 self.__age = age #表示私有 5 self.sex = sex 6 7 def get_name(self): 8 return self.name 9 def get_age(self): 10 return self.__age 11 def get_sex(self): 12 return self.sex 13 14 class Child(Parent): #繼承Parent父類 15 def get_age(self): 16 return self.age 17 18 P = Parent('mac',22,'male') 19 C = Child('YYY',24,'female') 20 print(P.get_name(),P.get_age(),P.get_sex()) 21 print(C.get_name(),C.get_sex())
1 class Parent(object): 2 def __init__(self,name,age,sex): 3 self.name = name 4 self.__age = age #表示私有 5 self.sex = sex 6 7 def get_name(self): 8 return self.name 9 def get_age(self): 10 return self.__age 11 def get_sex(self): 12 return self.sex 13 14 class Child1(Parent): #繼承Parent父類 15 def get_age(self,age): 16 self.age = age #私有類無法繼承 17 return self.age
def get_sex(self):
return self.sex
18 class Child2(Parent): 19 def get_age(self): 20 return self.age 21 def func(x): 22 x.get_age 23 24 P = Parent('mac',22,'male') 25 C1 = Child1('YYY1',24,'female') 26 C2 = Child2('YYY2',24,'female') 27 print(P.get_name(),P.get_age(),P.get_sex()) 28 print(C1.get_name(),C1.get_sex(),C1.get_age(23))#調用自己的get_age()
三、多態 和多態性
多態指的是一類事物有多種形態,(一個抽象類有多個子類,因而多態的概念依賴於繼承)
一 什么是多態性(請務必注意注意注意:多態與多態性是兩種概念。)
多態性是指具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同功能的函數。
在面向對象方法中一般是這樣表述多態性:向不同的對象發送同一條消息(!!!obj.func():是調用了obj的方法func,又稱為向obj發送了一條消息func),不同的對象在接收時會產生不同的行為(即方法)。也就是說,每個對象可以用自己的方式去響應共同的消息。所謂消息,就是調用函數,不同的行為就是指不同的實現,即執行不同的函數。
比如:老師.下課鈴響了(),學生.下課鈴響了(),老師執行的是下班操作,學生執行的是放學操作,雖然二者消息一樣,但是執行的效果不同
多態性分為靜態多態性和動態多態性
靜態多態性:如任何類型都可以用運算符+進行運算
動態多態性:如下
1 class Parent(object): 2 def __init__(self,name,age,sex): 3 self.name = name 4 self.__age = age #表示私有 5 self.sex = sex 6 7 def get_name(self): 8 return self.name 9 def get_age(self): 10 return self.__age 11 def get_sex(self): 12 return self.sex 13 14 class Child1(Parent): #繼承Parent父類 15 def get_age(self,age): 16 self.age = age 17 return self.age 18 def get_sex(self): 19 print(self.sex) 20 class Child2(Parent): 21 def get_sex(self): 22 print (self.sex) 23 def func(x): 24 x.get_sex() 25 26 P = Parent('mac',22,'male') 27 C1 = Child1('YYY1',24,'male') 28 C2 = Child2('YYY2',24,'female') 29 C1.get_sex() 30 C2.get_sex() 31 func(C1) 32 func(C2)
