一、引言
面向對象的編程---object oriented programming,簡稱:OOP,是一種編程的思想。OOP把對象當成一個程序的基本單元,一個對象包含了數據和操作數據的函數。面向對象的出現極大的提高了編程的效率,使其編程的重用性增高。
python面向對象的重要術語:
1、多態(polymorphism):一個函數有多種表現形式,調用一個方法有多種形式,但是表現出的方法是不一樣的。
2、繼承(inheritance)子項繼承父項的某些功能,在程序中表現某種聯系
3、封裝(encapsulation)把需要重用的函數或者功能封裝,方便其他程序直接調用
4、類:對具有相同數據或者方法的一組對象的集合
5、對象:對象是一個類的具體事例
6、實例化:是一個對象事例話的實現
7、標識:每個對象的事例都需要一個可以唯一標識這個事例的標記
8、實例屬性:一個對象就是一組屬性的集合
9、事例方法:所有存取或者更新對象某個實例一條或者多條屬性函數的集合。
10、類屬性:屬於一個類中所有對象的屬性,
11、類方法:
二、python中的類與對象
1 class Person(object): 2 def __init__(self,name): #————————>初始化函數 3 self.name = name 4 print "------>create:",name 5 def say_name(self): 6 print "my name is %s" %self.name 7 8 p1 = Person("gf1") # --------->類的實例化 9 p2 = Person("gf2") 10 11 p1.say_name() 12 p2.say_name()
輸出結果:
1 ------>create: gf1 2 ------>create: gf2 3 my name is gf1 4 my name is gf2
以上程序是類的一個基本寫法,理解如下:
1、person就是一個類,在這個類中是很多的方法集合。例如類中包含sayname等,還可以按照程序要求靈活添加各種類的方法。
2、類中self其實就是類的對象,是一個具體的實例。多種的實例通過類中的self表現出來。
3、程序中的p1、p2是具體的實例,實體。(學名叫:對象。)。一個對象就是一個實體。實體通過調用屬性、方法在類中體現相應的功能。
三、python中的繼承
繼承就是子類繼承了父類相應的功能和方法。
如下代碼說明了子類繼承父類:
1 class firsttest: 2 def __init__(self,name): 3 self._name = name 4 def sayfirst(self): 5 print("hello {0}".format(self._name)) 6 7 class secondtest(firsttest): #子類繼承父類(firsttest)的方法 8 def __init__(self,name): 9 firsttest.__init__(self,name) 10 def saysecond(self): 11 print("good {0}").format(self._name) 12 13 s = secondtest("gf1") #類的具體實例。 14 s.sayfirst() 15 s.saysecond()
四、函數和面向對象編程的區別
相同點:都是把程序進行封裝、方便重復利用,提高效率。
不同點:函數重點是用於整體調用,一般用於一段不可更改的程序。僅僅是解決代碼重用性的問題。
而面向對象出來代碼重用性。還包括繼承、多態等。使用上更加靈活。