面向對象編程OOP:object oriented programming。
OOP把對象做爲程序的基本單元,一個對象包含了數據和操做數據的函數。Python是一門面向對象的編程語言,經過對象實現對方法的調用。python
面向過程的程序設計把計算機程序視爲一系列的命令集合,即一組函數的順序執行。爲了簡化程序設計,面向過程把函數繼續切分爲子函數,即把大塊函數經過切割成小塊函數來下降系統的複雜度。
而面向對象的程序設計把計算機程序視爲一組對象的集合,而每一個對象均可以接收其餘對象發過來的消息,並處理這些消息,計算機程序的執行就是一系列消息在各個對象之間傳遞。
對於面嚮對象語言,重要的概念是類和實例。類是一個抽象的模板,實例是根據類模板建立出的一個對象。
在python中,全部數據類型均可以視爲對象,固然也能夠自定義對象。自定義對象數據類型就是面向對象中類的概念,根據類來建立對象。
它的三大特色就是:封裝、繼承、多態。編程
class class_name: pass
class class_name(object): pass
class
是關鍵字,類。類名class_name
一般以大寫字母開頭。object
表示該類是從哪一個類繼承而來。事實上object是全部類都會繼承的基類,通常不會顯示寫出。(我通常會習慣寫上)好比學生,一個班級會有不少個學生,那對於學生這個集合,會有不少共同的地方,好比說學生的姓名、學號、年級、專業、成績等一系列共同的特性,那麼咱們就能夠把這些都抽象成一個學生Student類。以下:數據結構
class Student(object): pass
上面例子,咱們先用pass
進行演示,表示什麼都不操做。編程語言
經過類能夠建立Student
實例,方法以下:函數
>>> bart = Student() # 變量bart指向的是一個Student的實例 >>> bart <__main__.Student object at 0x0086F710> # 類object 實例的內存地址 >>> Student # 類 <class '__main__.Student'> # 返回的是Student 類的屬性 class
對類的實例,能夠進行屬性的綁定。spa
>>> bart.name = 'xlp' # 動態給變量綁定屬性 >>> bart.name 'xlp'
那屬性是如何實現綁定的呢?__init__()
實例方法。
當一個實例被建立後,Python
會檢查是否實現了__init__()
方法,若是沒有定義該方法,對實例不會施加任何特定的操做,任何須要特殊的操做,須要本身去自定義該方法。即__init()__
會被自動調用,不論是默認的仍是自定義的。設計
self
,self
指向建立的實例自己;self
指向的實例上;__init__()
方法返回None
;針對第三點:由於實例對象是在自動化建立實例調用後返回的,若是定義了構造器__init__()
,它不該該返回任何對象,不然就有可能發生衝突,只能返回實例。試圖返回任何非None的其餘對象會報TypeError
的錯誤:code
查看實例屬性:dir()
經過內建函數dir(class_name)
能夠查看類的屬性,例如:dir(Student1)。也能夠訪問實例的屬性。本身嘗試打印出來看看~對象
屬性這一塊還有點玄幻:類屬性和實例屬性。下一小節一塊兒來看看吧~
而後面向過程其實也不太記得了,若是有懂的小夥伴能夠留言哦~ ~ ~繼承
若是以爲文章有丟丟用處,動動小指,點個贊吧!
若是哪裏寫的有問題,或者有更好的方式,cue我一下
❤ thanks for watching, keep on updating...