python物件程式設計總結(一)

2021-08-08 16:45:53 字數 1216 閱讀 3298

對於乙個python的class而言,擁有類屬性,類物件,例項物件,例項屬性等概念。

class a:
name="a"  #類屬性,為類所共有,有點類似c++中的靜態資料成員
def printname(self):  #定義了乙個方法
print(self.name)

類支援兩種做法:1.引用,即直接使用類物件和類屬性。2.例項化,即產生乙個物件的例項。比如:

a類定義完成之後就產生了乙個全域性的類物件,可以通過類物件來訪問類中的屬性和方法了。當通過a.name(至於為什麼可以直接這樣訪問屬性後面再解釋,這裡只要理解類物件這個概念就行了)來訪問時,a.name中的a稱為類物件,這點和c++中的有所不同。當然還可以進行例項化操作,a=a( ),這樣就產生了乙個a的例項物件,此時也可以通過例項物件a來訪問屬性或者方法了(a.name).

在資料成員前面加__意味著這是私有的。

同時,python中擁有一些內建的方法,比如:構造方法__init__(self,....)在生成物件時呼叫,可以用來進行一些初始化操作,不需要顯示去呼叫,系統會預設去執行。構造方法支援過載,如果使用者自己沒有重新定義構造方法,系統就自動執行預設的構造方法。

析構方法__del__(self)在釋放物件時呼叫,支援過載,可以在裡面進行一些釋放資源的操作,不需要顯示呼叫。

還有其他的一些內建方法:

對於類屬性和例項屬性,如果在類方法中引用某個屬性,該屬性必定是類屬性,而如果在例項方法中引用某個屬性(不作更改),並且存在同名的類屬性,此時若例項物件有該名稱的例項屬性,則例項屬性會遮蔽類屬性,即引用的是例項屬性,若例項物件沒有該名稱的例項屬性,則引用的是類屬性;如果在例項方法更改某個屬性,並且存在同名的類屬性,此時若例項物件有該名稱的例項屬性,則修改的是例項屬性,若例項物件沒有該名稱的例項屬性,則會建立乙個同名稱的例項屬性。想要修改類屬性,如果在類外,可以通過類物件修改,如果在類裡面,只有在類方法中進行修改。

從類方法和例項方法以及靜態方法的定義形式就可以看出來,類方法的第乙個引數是類物件cls,那麼通過cls引用的必定是類物件的屬性和方法;而例項方法的第乙個引數是例項物件self,那麼通過self引用的可能是類屬性、也有可能是例項屬性(這個需要具體分析),不過在存在相同名稱的類屬性和例項屬性的情況下,例項屬性優先順序更高。靜態方法中不需要額外定義引數,因此在靜態方法中引用類屬性的話,必須通過類物件來引用。

Python物件導向程式設計 一

類和例項 定義乙個student類 object父類 class student object pass 複製 注意 特殊方法 init 前後有兩個下劃線!def init self,name,score self.name name self.score score 複製 def get grad...

Python物件導向程式設計 一

類和例項 定義乙個student類 object父類 class student object pass 複製 注意 特殊方法 init 前後有兩個下劃線!def init self,name,score self.name name self.score score 複製 def get grad...

Python 物件導向程式設計(一)

python是一門物件導向的程式語言 所謂的物件導向的語言,簡單理解就是語言中的所有操作都是通過物件來進行的。先看一下面向過程的程式設計的語言 面向過程指將我們的程式的邏輯分解為乙個乙個的步驟,通過對每個步驟的抽象,來完成程式。例如 孩子上學 分7步 1.媽媽起床 2.媽媽洗漱 3.媽媽做早飯 4....