熱線電話:13121318867

登錄
首頁精彩閱讀類方法--戴著@classmethod帽子的函數
類方法--戴著@classmethod帽子的函數
2022-03-29
收藏
類方法--戴著@classmethod帽子的函數

作者:Kevin

來源:麥叔編程

?

081篇,講解了@property和@staticmethod的用法,有看官就表示@staticmethod都說了為什么不把@classmethod也拿出來說說?今天的三分鐘就專門講解下@classmethod。

?

@classmethod

@classmethod與@staticmethod的區別

廢話不多說,直接上代碼:

class Circle: PI = 3.14159  @classmethod def calculate_area(cls, radius): a = (radius**2)*cls.PI return a

ca = Circle.calculate_area(4)
print("面積是:",ca)

================================ class Circle:  @staticmethod def area(radius): # 沒有self關鍵字,但是需要傳入參數 a = (radius**2)*3.14159 return a

a = Circle.area(4) # 無需實例化,直接從類里調 print("面積:",a)

對比之下我們發現類方法@classmethod的首個參數為cls,這個cls指向的是類本身。

cls.PI的含義就是,我的PI是從類里(cls)拿來用的。

而靜態方法@staticmethod沒有cls參數,所以它是拿不到類里存在的一些變量和方法,「沒錯還有方法」。

下面演示一下怎么用類方法@classmethod去調用實例方法(注意代碼中的注釋):

class Circle: PI = 3.14159 # 類中的常量PI @classmethod def get_area(cls, radius): # 類方法 a = cls(radius).calculate() # 調用實例函數得到面積值,cls(radius)可以理解成實例化 return a def __init__(self, radius): # 構造方法,傳入半徑值radius self.radius = radius def calculate(self): # 實例方法,計算面積值a a = (self.radius**2)*self.PI return a

ca = Circle.get_area(4)
print("面積是:",ca)

看了上面的代碼是不是感覺有點上頭了?算個圓形面積,竟然搞了那么多代碼。return (radius**2)*PI不香么?

但是我還是希望大家能好好理解下類函數的用法,如果本篇的內容能理解個七七八八,那么恭喜你,你已經超越了90%的Python學習者了。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢