1. self表示一個(gè)類的實(shí)例對(duì)象本身。如果用了staticmethod就無視這個(gè)self了,,就將這個(gè)方法當(dāng)成一個(gè)普通的函數(shù)使用了,。 2. cls表是這個(gè)類本身,。 # 代碼為證 class A(object): def func1(self): print("func1:", self) @staticmethod def func2(): print("func2") @classmethod def func3(cls): print("func3:", cls) a = A() a.func1() # 最常見的調(diào)用方式,,但與下面的方式相同 # func1: <__main__.A object at 0x0000014788701EB8> A.func1(a) # 這里傳入實(shí)例a,,相當(dāng)于普通方法的self # func1: <__main__.A object at 0x0000014788701EB8> A.func2() # 這里,,由于靜態(tài)方法沒有參數(shù),,故可以不傳東西 # func2: A.func3() # 這里,由于是類方法,,因此,,它的第一個(gè)參數(shù)為類本身。 # func3: <class '__main__.A'> print(A) # 可以看到,,直接打印A,,與上面那種調(diào)用返回同樣的信息。 # <class '__main__.A'> 3. 更多: 類先調(diào)用__new__方法,,返回該類的實(shí)例對(duì)象,,這個(gè)實(shí)例對(duì)象就是__init__方法的第一個(gè)參數(shù)self,即self是__new__的返回值,。 |
|