Python 中的 classmethod()


類方法接收類本身作為其第一個引數。這樣我們就可以在不先從類中建立例項的情況下在類中呼叫方法。我們只需在類中包含的方法宣告前使用裝飾器 @classmethod,然後就可以直接訪問該方法。以下是 classmethids 的主要特徵。

  • 類方法繫結到類,不依賴於類例項化的使用。

  • 類方法可以修改類,然後傳播到類的所有例項。

使用 classmethod

在下面的示例中,我們建立了一個名為 WeekDay 的類,並在其中建立了一個名為 daynames 的方法。然後我們在不先例項化該類的情況下訪問此方法,這意味著沒有從該類建立任何物件。

示例

class WeekDay:
   day_name = ['Mon','Tue','Wed','Thu','Fri']
# Applying the class method
   @classmethod
   def daynames(n):
      print('The WeekDays are', n.day_name)

WeekDay.daynames()
# OR
WeekDay().daynames()

輸出

執行以上程式碼會得到以下結果 -

The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']

不使用 classmethod

若不使用類方法,可透過申明無類的物件來實現相同結果。這是我們需要類方法的原因。

示例

def daynames():
   day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
   print('The WeekDays are', day_name)

daynames()

輸出

執行以上程式碼會得到以下結果 -

The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']

更新時間:2019-10-17

402 檢視

開啟你的職業生涯

完成課程後獲取認證

開始
廣告