python物件導向程式設計1

2022-06-10 10:36:08 字數 3084 閱讀 5792

物件導向程式設計

物件導向程式設計——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)。物件導向的程式寫出來就像這樣:

jack1 = student('jack', 59)

rose1 = student('rose', 87)

print(jack.print_score())

print(rose.print_score())

三、物件導向特點

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

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

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

四、類和物件

類和物件是物件導向程式設計的兩個核心概念。

1、類類是對一群具有相同特徵或者行為的事物的乙個統稱,是抽象的。

特徵其實就是乙個變數,在類裡我們稱之為屬性。

行為其實就是乙個函式,在類裡我們稱之為方法。

類其實就是由屬性和方法組成的乙個抽象概念。

2、物件

物件是由類建立出來的乙個具體事物,可以直接使用。由哪乙個類建立出來的物件,就擁有在哪乙個類中定義的屬性和方法。在開發中,應該先有類,在類裡定義好屬性和行為,在根據類來建立物件。

3、類和物件的關係

類是模板,物件是根據類這個模板建立出來的,應該先有類,再有物件。

使用同乙個類,能夠建立出很多物件。

類中定義了什麼屬性和方法,物件中就有什麼屬性和方法。

不同物件對應的屬性值也會不同。

例如:定義了乙個狗類,這個狗類有以下屬性:

品種顏色

性別名字

五、類的設計

在使用物件導向開發前,應該首先分析需求,確定一下,程式中需要包含哪些類。

在程式開發中,要設計乙個類,通常需要滿足一下三個要素:

a、類名 這類事物的名字,按照大駝峰命名法(每個單詞首字母大寫)起名。

b、屬性 這類事物具有什麼樣的特徵。

c、方法 這類事物具有什麼樣的行為。

1、定義類名

名詞提煉法:分析整個業務流程,出現的名詞,通常就是要找到的類。

2、屬性和方法的確定

物件的特徵描述,可以定義成屬性。

物件具有的行為(動詞)可以定義成方法。

3、類定義與呼叫舉例

mike今年18歲,身高1.75,早上跑步,會去吃東西。

john今年17歲,身高1.65,早上不跑步,喜歡吃東西。

a、類定義

class person(object):   

def __init__(self,name,age,height):

self.name=name

self.age=age

self.height=height

def run(self):

print('正在跑步')

def eat(self):

print('正在吃東西')

說明:1、類定義使用關鍵字class,後面跟類名(大駝峰命名法),(object)可以省略,(object)代表繼承自object類,所有的類都繼承自object類,後面跟冒號:(不可少)

2、在__init__()方法裡,以引數的形式定義特徵,我們稱之為屬性

3、自定義行為(方法),第乙個引數必須是self

b、建立物件

p1=person('mike',18,1.75)

p2=person('john',17,1.65)

p1.run()

p1.eat()

p2.eat()

說明:1、person()會自動呼叫__init__方法,然後傳參,注意,self引數不需要傳參

2、p1和p2都會有name、age、height屬性,同時具有run、eat方法

3、根據業務邏輯,讓不同的物件執行不同的行為(方法)

物件導向程式設計1

包 用於組織和管理類的目錄結構,同乙個包中不同出現同名類 包名 識別符號.識別符號.識別符號.package 打包命令,指明該類所在的包,該命令必須為 的第一行,同時必須與目錄結構相同 若在乙個包中需要使用其他包中的類,需要匯入包 import 包名.類名 使用包的原則 1.同乙個包中往往包含功能相...

物件導向程式設計(1)

什麼叫做面向過程程式設計?通俗的來說,這種程式設計風格如同從上到下,從左到右。首先,要考慮遵循的步驟,然後考慮如何表現這些資料。那麼什麼又是物件導向程式設計呢?從使用者的角度出發考慮物件,描述物件所需的資料以及描述使用者與資料進行互動所需要的操作。完成對介面的描述後,需要確定如何實現介面和資料儲存。...

物件導向程式設計 1 物件導向程式設計初步認知

其實,不需要搞明白面向過程程式設計和物件導向程式設計的區別,只需要明白物件導向的特點 變數必須有家長,萬事家長做主.慢慢就能理解物件導向的優劣.1.變數有所屬.常規方式 var a 1 let b 1 2 const c function name console.log a,b,c 常規的變數申明...