[分享] Class method
這是最近遇到一個人的問題,我突然發現其實書上很少提及
光是decorator就很少有書在講了,但是我覺得有分享出來的需要
Q: Python如何define一個class method?
在Python裡面的話,定一個method的話,第一個引數都要吃一個self當做instance的連結
所以你要是class沒有實體化的話,呼叫一個method就會發生TypeError
EX class:
>>> class myClass():
... def instMethod(self):
... return self
... def classMethod():
... print 'call classMethod()'
... def classMethod2(self):
... print self
這時候你就會發現你不訂第一個引數self,他會做檢查引發TypeError不會讓你success,
因為他一定要傳一個引數進去,所以如果我們要定一個classmethod怎麼辦呢?
要利用"@classmethod"這個decorator
>>> class myClass():
... @classmethod
... def classMethod(cls):
... print cls
再去做呼叫看看
>>> myClass.classMethod()
<class __main__.myClass at 0x466150>
就會發現第一個引數不傳instance了,改傳class
如果有版友還要補充,請多多指教^_^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.135.70
推
09/26 08:08, , 1F
09/26 08:08, 1F
推
09/26 10:46, , 2F
09/26 10:46, 2F
→
09/26 12:45, , 3F
09/26 12:45, 3F
→
09/26 12:46, , 4F
09/26 12:46, 4F
→
09/26 12:46, , 5F
09/26 12:46, 5F
推
09/26 13:52, , 6F
09/26 13:52, 6F
推
09/28 10:24, , 7F
09/28 10:24, 7F
→
09/28 10:24, , 8F
09/28 10:24, 8F
推
09/28 12:25, , 9F
09/28 12:25, 9F
→
09/29 13:32, , 10F
09/29 13:32, 10F
→
10/01 20:20, , 11F
10/01 20:20, 11F
推
10/05 05:57, , 12F
10/05 05:57, 12F
→
10/05 05:58, , 13F
10/05 05:58, 13F
→
10/05 06:00, , 14F
10/05 06:00, 14F
→
10/05 06:00, , 15F
10/05 06:00, 15F
→
10/05 06:38, , 16F
10/05 06:38, 16F
Python 近期熱門文章
PTT數位生活區 即時熱門文章