一、實體方法(Instance Method) Python類別(Class)中沒有加任何裝飾詞(Decorator)的方法(Method),至少要有一個self參數,於方法(Method)被呼叫時指向物件(Object),其後可以依需求增加額外參數,如下範例: 實體方法(Instance Method)透過self參數可以自由的存取物件(Object)的屬性(Attribute)及其他方法(Method),藉此來改變物件(Object)的狀態,如下範例: 執行結果 從執行結果可以看到,我們印出self參數時,結果顯示為Cars類別的物件(Object),也就是說呼叫實體方法(Instance Method)時,Python編譯器會傳入物件(Object),使得self參數指向該物件(Object)。 另一方面,當透過類別(Class)呼叫實體方法(Instance Class)時,這會使得Python編譯器無法將self參數指向物件(Object),而發生TypeError的錯誤,如下範例: 執行結果 另外,在實體方法(Instance Method)中可以透過self.__class__屬性(Attribute)來改變類別(Class)的狀態,如下範例: 執行結果 範例中實體方法(Instance Method)即利用self.__class__屬性(Attribute)來改變door類別屬性(Class Attribute)。 二、 類別方法(Class Method) Python類別(Class)中有@classmethod裝飾詞(Decorator)的方法(Method),被呼叫時,相較於實體方法(Instance Method)的self參數指向物件(Object),類別方法(Class Method)為cls參數,指向類別(Class),如下範例:…
學程式助教January 8, 2020