以python例項講解物件導向與面向過程的區別

2021-08-05 21:10:25 字數 1533 閱讀 2939

pop與·oop區分

面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把大塊函式通過切割成小塊函式來降低系統的複雜度。

而物件導向的程式設計把電腦程式視為一組物件的集合,而每個物件都可以接收其他物件發過來的訊息,並處理這些訊息,電腦程式的執行就是一系列訊息在各個物件之間傳遞。

在python中,所有資料型別都可以視為物件,當然也可以自定義物件。自定義的物件資料型別就是物件導向中的類(class)的概念。

我們以乙個例子來說明面向過程和物件導向在程式流程上的不同之處。

假設我們要處理學生的成績表,為了表示乙個學生的成績,面向過程的程式可以用乙個dict表示:

std1 = 

std2 =

而處理學生成績可以通過函式實現,比如列印學生的成績:

def

print_score

(std):

print

'%s: %s' % (std['name'], std['score'])

如果採用物件導向的程式設計思想,我們首選思考的不是程式的執行流程,而是student這種資料型別應該被視為乙個物件,這個物件擁有namescore這兩個屬性(property)。如果要列印乙個學生的成績,首先必須建立出這個學生對應的物件,然後,給物件發乙個print_score訊息,讓物件自己把自己的資料列印出來。

class

student

(object):

def__init__

(self, name, score):

self.name = name

self.score = score

defprint_score

(self):

print

'%s: %s' % (self.name, self.score)

給物件發訊息實際上就是呼叫物件對應的關聯函式,我們稱之為物件的方法(method)。物件導向的程式寫出來就像這樣:

bart = student('bart simpson', 59)

lisa = student('lisa simpson', 87)

bart.print_score()

lisa.print_score()

物件導向的設計思想是從自然界中來的,因為在自然界中,類(class)和例項(instance)的概念是很自然的。class是一種抽象概念,比如我們定義的class——student,是指學生這個概念,而例項(instance)則是乙個個具體的student,比如,bart simpson和lisa simpson是兩個具體的student:

所以,物件導向的設計思想是抽象出class,根據class建立instance。

物件導向的抽象程度又比函式要高,因為乙個class既包含資料,又包含運算元據的方法

python物件導向講解 大乾貨

類和物件 類 class 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。物件 通過類定義的資料結構例項。物件包括兩個資料成員 類變數和例項變數 和方法。物件導向的三大特徵 封裝 繼承 多型 所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把...

python 物件導向例項2

class gun 定義槍類 def init self,model 槍的屬性有名字 初始子彈數量 self.model model self.bullet count 0 def add bullet self,count 方法 新增子彈 self.bullet count count def s...

python物件導向程式設計例項

本案例設計的是 為購置的新房添置家具,在本案例中,我們需要給出指定的房屋和面積,在為其添置家具的過程中,各家具的面積之和不能超過房屋面積的總和。房屋及家具的面積需要由使用者手動輸入,也可以自定義增加房屋選項或家具選項。房子要使用到家具,被使用的類通常先開發 class houseitem def i...