1. 程式人生 > >Python —— method、classmethod、staticmethod

Python —— method、classmethod、staticmethod

1、method:使用例項物件呼叫,物件方法可以用類名呼叫,但需要傳入一個例項物件的引數

2、classmethod:類方法一般使用類名呼叫。類方法可以使用類或例項物件呼叫,但cls永遠代表類。(cls不是關鍵字,換成其他名稱也可以,但儘量使用cls) 。
類方法中:不能傳例項的屬性和方法
呼叫:例項物件和類物件都能呼叫

3、staticmethod:靜態方法一般使用類名呼叫。靜態方法就是一個普通的函式,定義時有幾個形參,呼叫時就傳入幾個實參。靜態方法可以使用類或例項物件呼叫,但一般使用類名呼叫
靜態方法中:方法體中,不能使用類或例項的任何屬性或方法
呼叫:例項物件和類物件都可以呼叫

例:
在這裡插入圖片描述

在這裡插入圖片描述

1、直接寫在class中的屬性叫做類屬性(可以通過類名直接呼叫)
2、寫在 __init__中的屬性叫物件/例項屬性
3、物件屬性的優先順序高於類屬性:
當呼叫物件屬性時,如果存在物件屬性,則直接使用物件屬性,
如果不存在物件屬性,去找相同名稱的類屬性,如果也沒有相同名稱的類方法,則報錯
4、物件可以動態新增物件屬性,動態新增的屬性,在取值之前必須有賦值的過程。(物件動態新增的屬性,對其他物件無效) 例:p1.name = “lili”
5、刪除物件屬性:del 物件名.物件屬性
物件屬性存在時,刪除物件屬性,可正常刪除
物件屬性不存在時,刪除物件屬性,報錯
6、儘量不要將類屬性與物件屬性重名,否則,物件屬性會將類屬性覆蓋,物件屬性刪除時,才能找到類屬性

總結:
method:可以使用例項化物件呼叫;也可以使用類名呼叫,不過使用類名呼叫時,要傳入一個例項化物件

classmethod和staticmethod:一般都建議使用類名呼叫,也可以使用例項化物件呼叫