物件導向程式設計——object oriented programming,簡稱oop,是一種程式設計思想。oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。
面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把大塊函式通過切割成小塊函式來降程式設計客棧低系統的複雜度。
而物件導向的程式設計把電腦程式視為一組物件的集合,而每個物件都可以接收其他物件發過來的訊息,並處理這些訊息,電腦程式的執行就是一系列訊息在各個物件之間傳遞。
在python中,所有資料型別都可以視為物件,當然也可以自定義物件。自定義的物件資料型別就是物件導向中的類(class)的概念。
我們以乙個例子來說明面向過程和物件導向在程式流程上的不同之處。
假設我們要處理學生的成績表,為了表示乙個學生的成績,面向過程的程式可以用乙個dict表示:
std1 =
std2 =
而程式設計客棧處理學生成績可以通過函式實現,比如列印學生的成績:
def print_score(std):
print '%s: %s' % (std['name'], std['score'])
如果採用物件導向的程式設計思想,我們首選思考的不是程式的執行流程,而是student這種資料型別應該被視為乙個物件,這個物件擁有name和score這兩個屬性(property)。如果要列印乙個學生的成績,首先必須建立出這個學生對應的物件,然後程式設計客棧,給物件發乙個print_score訊息,讓物件自己把自己的資料列印出來。
class student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_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()
物件導向的設計思想smzdsvzk是從自然界中來的,因為在自然界中,類(class)和例項(instance)的概念是很自然的。class是一種抽象概念,比如我們定義的class——student,是指學生這個概念,而例項(instance)則是乙個個具體的student,比如,bart simpson和lisa simpson是兩個具體的student:
所以,物件導向的設計思想是抽象出class,根據class建立instance。
物件導向的抽象程度又比函式要高,因為乙個class既包含資料,又包含運算元據的方法。
小結資料封裝、繼承和多型是物件導向的三大特點,我們後面會詳細講解。
本文標題: 簡述python中的物件導向程式設計的概念
本文位址:
JS物件導向簡述
一 面向過程和物件導向的區別 面向過程 pop 關注點在於做了什麼,描述的是發展的過程。物件導向 oop 關注點在於能做什麼,描述的是物件與物件之間的關係。物件導向的特點 繼承 多型 封裝 二 物件導向的三大特點 物件有三大基本特徵 封裝 繼承 多型。那麼它們具體的含義是什麼呢?接下來,我以一家銀行...
python中的物件導向
一 什麼是類 關鍵字 class 規則同變數名 規範 一般使用大駝峰表示 單詞首字母大寫 class 類名 屬性方法 二 什麼是物件 物件就是某個類的具體的乙個例項。根據資料型別建立乙個物件,這個過程就叫做例項化。類名 三 類的屬性 直接定義在類中的變數 就是類屬性。訪問類屬性 類名.屬性名 物件....
3 簡述物件導向的特徵
封裝是物件導向的特徵之一,是物件和類概念的主要特徵。封裝,也就是把客觀事物封裝成抽象的類,並且可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有可能,並在無需重新編寫原來的類的情...