Python學習筆記 例項方法和靜態方法

2021-07-09 11:02:59 字數 2143 閱讀 2753

例項的方法就是在類中定義的函式

class中定義的全部是例項方法,例項方法第乙個引數 self 是例項本身。在class中定義類方法,要加@classmethod;定義靜態方法要加@staticmethod

類方法:方法的第乙個引數都是類物件而不是例項物件(cls)

區別主要體現在兩個方面:

1. 在外部呼叫靜態方法時,可以使用」類名.方法名」的方式,也可以使用」物件名.方法名」的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。

2. 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數和例項方法;例項方法則無此限制。

3. 類方法可以被物件呼叫,也可以被例項呼叫;傳入的都是類物件,主要用於工廠方法,具體的實現就交給子類處理

4. 靜態方法引數沒有例項引數 self, 也就不能呼叫例項參

class

fun(object):

__count = 0

def__init__

(self,path=''):

self.path = path

fun.__count += 1

#靜態方法

@staticmethod

defusers

(n):

fun.n = n

return fun.n

#例項方法

defjobs

(self,work):

return fun('%s' % work)

#類方法

@classmethod

defcount

(cls):

return cls.__count

#定製類(特殊方法)

def__str__

(self):

return self.path

__repr__ = __str__

#呼叫print fun.count()

print fun().jobs('job')

print fun.users('tom')

print fun.count()

結果:

0 job

tom

2類方法和靜態方法都可以被類和類例項呼叫,類例項方法僅可以被類例項呼叫。

類方法的隱含呼叫引數是類,而類例項方法的隱含呼叫引數是類的例項,靜態方法沒有隱含呼叫引數。

class

chain

(object):

def__init__

(self,path='/users'):

self.path = path

defusers

(self,path):

return chain('%s/%s' % (self.path,path))

def__getattr__

(slef,path):

return chain('%s/%s' % (self.path,path))

def__str__

(self):

return self.path

__repr__ = __str__

print chain().users('tom').etc.list

結果:

/users/tom/etc/list

class

chian

(object):

def__init__

(self,path=''):

self.path = path

def__getattr__

(self,path):

return chain('%s/%s' % (self.path,path))

def__str__

(self):

return self.path

def__call__

(self,name):

return chain('get %s/:%s' %(self.path,name))

print chain().users('tom').etc.list

結果

get /users/:tom/etc/list

Python基礎學習筆記例項

最近在學習python,看了黑馬老師課程裡的名片管理,自己寫了一遍,感覺還比較有用。用字典存名片內容,包括名片的新增 修改 顯示全部。主函式 import crad def 無限迴圈,0退出 while true 顯示功能選單 card def.show menue action str input...

C Templates學習筆記 例項化

一 on demand例項化 有時候也被稱為隱式例項化或者自動例項化。on demand例項化表明 在使用模板 特化 的地方,編譯器通常需要訪問模板和某些模板成員的整個定義。例子 templateclass c 前置宣告 c p 0 正確,因為這裡不需要知道c的定義 template class c...

python學習筆記 實現收發Email

關於email的基礎知識就不說,直接進入python主題。一 傳送email 1 連線到郵件伺服器 2 登陸 如果需要的話 3 發出服務請求 比如傳送 4 退出 在smtp中我們主要用到的方法是 sendmail from,to,msg mopts,ropts 是把msg從from發給to,esmt...