1:在版本2.2 中,python社群最終統一了型別(type)和類(class),新式類具備更多高階的oop特性,扮演了乙個經典類(舊式類)超集的角色,後者是python 誕生時所創造的類物件。
2:下面的示例展示了如何建立乙個類:
classmynewobjecttype(bases):
'define mynewobjecttypeclass
'class_suite
新式類和經典類宣告的最大不同在於,所有新式類必須繼承至少乙個父類,引數bases可以是乙個(單繼承)或多個(多重繼承)用於繼承的父類。
object 是「所有類之母」。它位於所有類繼承結構的最上層。如果你沒有直接或間接的子類化乙個物件,那麼你就定義了乙個經典類:
classmynewobjecttype:
'define mynewobjecttype classic class
'class_suite
很多python類都還是經典類。即使經典類已經過時了,在以後的python 版本中,仍然可以使用它們。不過我們強烈推薦你盡可能使用新式類。
3:使用類最簡單的情況,類僅用作命名空間(namespaces)。這意味著你把資料儲存在變數中,對他們按命名空間進行分組,使得他們處於同樣的關係空間中。類似於c語言中的結構體(structures)一樣的特性。
4:在類中定義方法:
classmydatawithmethod(object):
defprintfoo(self):
'you invoked printfoo()!
'
self 引數代表例項物件本身,當用例項呼叫方法時,由直譯器將該例項傳遞給方法。所以,不需要自己傳遞self 進來。一般的方法會需要這個例項(self),而靜態方法或類方法不會。
例項化這個類,然後呼叫那個方法:
>>> myobj =mydatawithmethod()>>>myobj.printfoo()
you invoked printfoo()!
5:在python 中,__init__()實際上不是乙個構造器。python 建立例項後,呼叫__init__()方法。
6:
classaddrbookentry(object):
'address book entryclass
'def
__init__
(self, nm,ph):
self.name =nm
self.phone =ph
'createdinstance for:
', self.name
defupdatephone(self,newph):
self.phone =newph
'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
'updatede-mail address for:
', self.name
python中,當乙個類被派生出來,子類繼承了基類的屬性,所以,在上面的類中,我們不僅定義了__init__(),updatemail()方法,而且empladdrbookentry 還從addrbookentry 中繼承了updatephone()方法。
每個子類最好定義它自己的構造器__init__(),不然,基類的構造器會被呼叫。然而,如果子類重寫基類的構造器,基類的構造器就不會被自動呼叫了--這樣,基類的構造器就必須顯式寫出才會被執行,像我們上面那樣,用addrbookentry.__init__()設定名字和**號碼。這裡我們要顯式傳遞self例項物件給基類構造器,因為我們不是在其實例中呼叫那個方
法而是在乙個子類例項中呼叫那個方法。
classfather(object):
def__init__
(self):
'this is father
'class child(father): pass
>>> c =child()
this
isfather
class
father(object):
def__init__
(self):
'this is father
'class
child(father):
def__init__
(self):
'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.物件導向 什麼是物件?物件即是屬性和動作的集合體.物件是乙個抽象概念.重點在 物件 屬性和動作.類似上帝式思...