1、面向對象編程編程
面向對象編程——Object Oriented Programming,簡稱OOP,是一種程序設計思想。OOP把對象做爲程序的基本單元,一個對象包含了數據和操做數據的函數。面向過程的程序設計把計算機程序視爲一系列的命令集合,即一組函數的順序執行。爲了簡化程序設計,面向過程把函數繼續切分爲子函數,即把大塊函數經過切割成小塊函數來下降系統的複雜度。而面向對象的程序設計把計算機程序視爲一組對象的集合,而每一個對象均可以接收其餘對象發過來的消息,並處理這些消息,計算機程序的執行就是一系列消息在各個對象之間傳遞。ide
面向對象的最主要目的是提升程序的重複使用性。函數
2、類和實例this
面向對象最重要的概念就是類(Class)和實例(Instance),類是具備相同屬性和行爲的一組對象的集合。在Python中,類經過 class 關鍵字定義,以 Person 爲例,定義一個Person類spa
1 class Person(object): 2 pass
Python 中習慣將類名首字母大寫,緊接着是(object),表示該類是從哪一個類繼承下來的。事物的屬性在類中用變量表示,事物的行爲和動做在類中用方法即函數表示。設計
1 class Person(object): 2 def __init__(self,name,gender,birth): 3 self.name = name 4 self.gender = gender 5 self.birth = birth 6 def tell(self): 7 print('this is the informtion of %s '%self.name)
建立Person 類時,能夠爲Person類添加一個特殊的__init__()方法,當建立實例時,__init__()方法被自動調用,咱們就能在此爲每一個實例都加上統一的屬性。__init__()方法的第一個參數必須是self,後面的參數能夠本身定義。類中函數的第一個參數必須是self,self指向所建立的實例。self.<變量名> 稱爲實例變量,可在類的任何方法中直接應用。code
對象是實際的實體,每個對象都是類的一個具體實例。建立類的實例格式:orm
<變量> = <類名>([參數],....)建立實例時,必須提供除self之外的參數。對象
1 p1 = Person('alex','M',20), 2 p2 = Person('Rose','F',18)
除了接收__init__方法中指定的屬性,還能夠給實例增長其餘屬性blog
1 p1 = Person('alex','M',20) 2 p1.job = 'teacher' 3 print('the job of p1 is %s '%p1.job)
運行結果:
the job of p1 is teacher
對象方法調用:<對象名>.<方法名>.(<實參>)
1 p1 = Person('alex','M',20) 2 p2 = Person('Rose','F',18) 3 p1.tell() 4 p2.tell()
運行結果:
this is the informtion of alex this is the informtion of Rose
3、面向對象特性
面向對象的三大特性:封裝、繼承、多態
1. 封裝
Python對屬性權限的控制是經過屬性名來實現的,若是一個屬性由雙下劃線開頭(__),該屬性就沒法被外部訪問,僅能夠內部訪問。
1 p1 = Person('alex','M',20) 2 p1.tell() 3 print('修改前:',p1.get_age()) 4 p1.set_age(17) 5 print('修改後:',p1.get_age())
運行結果:
this is the informtion of alex 修改前: 20 修改後: 17
這樣外部要訪問私有屬性age必須經過get_age和set_age方法,這樣就確保了外部代碼不能隨意修改對象內部的狀態。