Python基礎 16物件導向概述

2022-07-03 15:30:25 字數 2855 閱讀 1151

1:在版本2.2 中,python社群最終統一了型別(type)和類(class),新式類具備更多高階的oop特性,扮演了乙個經典類(舊式類)超集的角色,後者是python 誕生時所創造的類物件。

2:下面的示例展示了如何建立乙個類:

class

mynewobjecttype(bases):

'define mynewobjecttypeclass

'class_suite

新式類和經典類宣告的最大不同在於,所有新式類必須繼承至少乙個父類,引數bases可以是乙個(單繼承)或多個(多重繼承)用於繼承的父類。

object 是「所有類之母」。它位於所有類繼承結構的最上層。如果你沒有直接或間接的子類化乙個物件,那麼你就定義了乙個經典類:

class

mynewobjecttype:

'define mynewobjecttype classic class

'class_suite

很多python類都還是經典類。即使經典類已經過時了,在以後的python 版本中,仍然可以使用它們。不過我們強烈推薦你盡可能使用新式類。

3:使用類最簡單的情況,類僅用作命名空間(namespaces)。這意味著你把資料儲存在變數中,對他們按命名空間進行分組,使得他們處於同樣的關係空間中。類似於c語言中的結構體(structures)一樣的特性。

4:在類中定義方法:

class

mydatawithmethod(object):

defprintfoo(self):

print

'you invoked printfoo()!

'

self 引數代表例項物件本身,當用例項呼叫方法時,由直譯器將該例項傳遞給方法。所以,不需要自己傳遞self 進來。一般的方法會需要這個例項(self),而靜態方法或類方法不會。

例項化這個類,然後呼叫那個方法:

>>> myobj =mydatawithmethod()  

>>>myobj.printfoo()

you invoked printfoo()!

5:在python 中,__init__()實際上不是乙個構造器。python 建立例項後,呼叫__init__()方法。

6:

class

addrbookentry(object):

'address book entryclass

'def

__init__

(self, nm,ph):

self.name =nm

self.phone =ph

print

'createdinstance for:

', self.name

defupdatephone(self,newph):

self.phone =newph

print

'updatedphone# for:

', self.name

class

empladdrbookentry(addrbookentry):

'employee address bookentry class

'def

__init__

(self, nm,ph, id, em):

addrbookentry.

__init__

(self, nm,ph)

self.empid =id

self.email =em

defupdateemail(self,newem):

self.email =newem

print

'updatede-mail address for:

', self.name

python中,當乙個類被派生出來,子類繼承了基類的屬性,所以,在上面的類中,我們不僅定義了__init__(),updatemail()方法,而且empladdrbookentry 還從addrbookentry 中繼承了updatephone()方法。

每個子類最好定義它自己的構造器__init__(),不然,基類的構造器會被呼叫。然而,如果子類重寫基類的構造器,基類的構造器就不會被自動呼叫了--這樣,基類的構造器就必須顯式寫出才會被執行,像我們上面那樣,用addrbookentry.__init__()設定名字和**號碼。這裡我們要顯式傳遞self例項物件給基類構造器,因為我們不是在其實例中呼叫那個方

法而是在乙個子類例項中呼叫那個方法。

class

father(object):

def__init__

(self):

print

'this is father

'class child(father): pass

>>> c =child()

this

isfather

class

father(object):

def__init__

(self):

print

'this is father

'class

child(father):

def__init__

(self):

print

'this is child

'>>> c =test.child()

this

is child

7:物件導向設計(ood)不會特別要求物件導向程式設計語言。事實上,ood 可以由純結構化語言來實現,比如c。

考慮用ood來工作的乙個最重要的原因,在於它直接提供建模和解決現實世界問題和情形的途徑。

python基礎16 物件導向程式設計二

一 繼承與派生 1 繼承的定義 繼承是一種建立新類的方式,即在類中提取共同的部分建立出乙個類,這樣的類稱為父類,也可稱為基類和超類,新建的類稱為派生類或子類。2 單繼承 就相當於子類繼承了乙個父類。3 多繼承 就相當於子類繼承了多個父類。4 檢視類繼承了哪個父類的方式 子類名.bases 5 在py...

PHP(16)物件導向基礎

1 類 class,是定義物件導向主體的最外層結構,用來包裹主體的資料和功能 函式 類是一類具有共性事務的代表,代表的是事務的共性。2 物件 object,是對某類事務的具體代表,也是實際資料和功能操作的具體單位,也被稱為例項 instance 3 例項化 new,從乙個抽象的概念 類 得到乙個符合...

物件導向 16

物件導向 一 物件導向思想 1.面向過程.一切以事物的流程為核心.重點在 過程 按照事物的發展流程.先幹嘛,後幹嘛,最後幹嘛 優點 簡單.流水線式工作 編寫比較簡單 缺點 可擴充套件性差 2.物件導向 什麼是物件?物件即是屬性和動作的集合體.物件是乙個抽象概念.重點在 物件 屬性和動作.類似上帝式思...