Python面向過程和面向對象基礎


總結一下:

面向過程編程:根據業務邏輯從上到下的寫代碼-----就是一個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())
View Code
 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM