您好,登錄后才能下訂單哦!
這篇文章主要介紹“python的類方法classmethod怎么使用”,在日常操作中,相信很多人在python的類方法classmethod怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python的類方法classmethod怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
@classmethod是裝飾器,用來指定類中的某個方法是類的綁定方法。
實例的綁定方法
在類中定義的方法默認是實例的綁定方法,實例的綁定方法第一參數是self,self指代實例的命名空間內存地址。必須有實例才能調用。
調用方式有2種:一是“實例.方法名()”,二是“類名.方法名(實例名)”,調用的前提是已創建了實例,沒有實例調用會報錯!
類的綁定方法
在類中定義的方法前加上@classmethod裝飾表示它是類的綁定方法,類中的綁定方法第一參數是cls,cls指代類的命名空間內存地址。有沒有實例都可以調用。
調用方式有2種:一種是“類名.方法名()”,二是“實例.方法名()”,調用前不需要創建實例,沒有實例也可以調用。
常見的運用場景有2種,一是調用類的綁定方法創建實例;二是修改類的私有屬性。
案例一,調用類的綁定方法創建實例:
import timeclass Date:def __init__(self, year, month, day):self.year = year self.month = month self.day = day @classmethoddef today(cls):now = time.localtime()return Date(now.tm_year, now.tm_mon, now.tm_mday)today = Date.today()print(f'今天是“{today.year}年{today.month}月{today.day}日”')out:今天是“2020年11月9日”
講解:
上述Date類中有2個方法,一個是__init__即實例的初始化方法,另一個是today即類的綁定方法,通過調用Date.today()可以無參數自主創建實例。這個在實際生產中經常會用到。請用心體類的綁定方法創建實例的方式。
案例二,調用類的綁定方法修改類的私有屬性:
class Goods:__discount = 1 # 折扣比例def __init__(self, name, price):self.name = name # 商品名稱self.price = price # 商品價格@propertydef total(self): # 商品總價return self.price*self.__discount @classmethoddef change_discount(cls, n):Goods.__discount = n apple = Goods('蘋果', 5)print(apple.total)Goods.change_discount(0.8)print(apple.total)pear = Goods('梨', 4)print(pear.total)out:54.03.2
上述代碼中類的私有屬性discount是控制全場商品折扣比例,在類的外部無法修改私有屬性。只能在類的內部定義類的綁定方法來修改類的私有屬性。
請注意實例的屬性和類的屬性區別:
實例的屬性是存儲在實例各自的命名空間中,所以有多少個實例就會有多少份相應的實例屬性。
類的屬性是存儲在類的命名空間中,所以類的屬性只有一份(無論有多少個實例)。
到此,關于“python的類方法classmethod怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。