中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的類方法classmethod怎么使用

發布時間:2021-11-25 09:25:28 來源:億速云 閱讀:323 作者:iii 欄目:互聯網科技

這篇文章主要介紹“python的類方法classmethod怎么使用”,在日常操作中,相信很多人在python的類方法classmethod怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python的類方法classmethod怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

@classmethod的定義

@classmethod是裝飾器,用來指定類中的某個方法是類的綁定方法。

@classmethod裝飾與否的區別

  • 實例的綁定方法

在類中定義的方法默認是實例的綁定方法,實例的綁定方法第一參數是self,self指代實例的命名空間內存地址。必須有實例才能調用。

調用方式有2種:一是“實例.方法名()”,二是“類名.方法名(實例名)”,調用的前提是已創建了實例,沒有實例調用會報錯!

  • 類的綁定方法

在類中定義的方法前加上@classmethod裝飾表示它是類的綁定方法,類中的綁定方法第一參數是cls,cls指代類的命名空間內存地址。有沒有實例都可以調用。

調用方式有2種:一種是“類名.方法名()”,二是“實例.方法名()”,調用前不需要創建實例,沒有實例也可以調用。

@classmethod運用場景

常見的運用場景有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怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定州市| 湟源县| 宁化县| 辛集市| 兴文县| 亚东县| 右玉县| 霍林郭勒市| 博兴县| 和林格尔县| 沙坪坝区| 东源县| 平阳县| 宜兰县| 广元市| 衡水市| 枝江市| 邹城市| 焦作市| 吉首市| 福泉市| 方正县| 吴堡县| 玛曲县| 洪洞县| 横峰县| 富宁县| 南华县| 禹州市| 扬中市| 密云县| 石嘴山市| 竹北市| 确山县| 庐江县| 邮箱| 忻城县| 邹城市| 双江| 南通市| 丰台区|