# 類的方法有三種:
# 1) 一是通過def定義的 普通的一般的损敷,需要至少傳遞一個(gè)參數(shù)葫笼,一般用self,這樣的方法必須通過一個(gè)類的實(shí)例去訪問拗馒,類似于c++中通過對(duì)象去訪問
# 2) 在def前面加上@classmethod路星,這種類方法的一個(gè)特點(diǎn)就是可以通過類名去調(diào)用,但是也必須傳遞一個(gè)參數(shù),一般用cls表示class洋丐,表示可以通過類直接調(diào)用
# 3) 在def前面加上@staticmethod呈昔,這種類方法是靜態(tài)的類方法,類似于c++的靜態(tài)函數(shù)友绝,他的一個(gè)特點(diǎn)是參數(shù)可以為空堤尾,同樣支持類名和對(duì)象兩種調(diào)用方式
代碼示例:
class A(object):
member = 'this is a test'
def __init__(self):
pass
@classmethod # 類方法
def print1(cls):
print(cls.member)
def print2(self):
print(self.member)
@staticmethod # 靜態(tài)方法
def print3():
print('static method')
@staticmethod # 靜態(tài)方法
def print4(cls):
print('static method', cls.member, cls)
if __name__ == "__main__":
a = A()
A.print1()
a.print2()
A.print3()
A.print4(A)
a.print4(A)
a.print4(a)
----
this is a test
this is a test
static method
static method this is a test <class '__main__.A'>
static method this is a test <class '__main__.A'>
static method this is a test <__main__.A object at 0x102a08908>