久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

python中的class_static的@classmethod的巧妙用法

瀏覽:5日期:2022-06-16 09:57:38

python中的class_static的@classmethod的使用 classmethod的使用,主要針對的是類而不是對象,在定義類的時候往往會定義一些靜態(tài)的私有屬性,但是在使用類的時候可能會對類的私有屬性進(jìn)行修改,但是在沒有使用class method之前對于類的屬性的修改只能通過對象來進(jìn)行修改,這是就會出現(xiàn)一個問題當(dāng)有很多對象都使用這個屬性的時候我們要一個一個去修改對象嗎?答案是不會出現(xiàn)這么無腦的程序,這就產(chǎn)生classmethod的妙用。請看下面的代碼:

class Goods: __discount = 0.8 def __init__(self,name,money):self.__name = nameself.__money = money @property def price(self):return self.__money*Goods.__discount @classmethod def change(cls,new_discount):#注意這里不在是self了,而是cls進(jìn)行替換cls.__discount = new_discountapple = Goods(’蘋果’,5)print(apple.price)Goods.change(0.5) #這里就不是使用apple.change()進(jìn)行修改了print(apple.price)

上面只是簡單的列舉了class method的一種使用場景,后續(xù)如果有新的會持續(xù)更新本篇文章 2.既然@staticmethod和@classmethod都可以直接類名.方法名()來調(diào)用,那他們有什么區(qū)別呢

從它們的使用上來看,@staticmethod不需要表示自身對象的self和自身類的cls參數(shù),就跟使用函數(shù)一樣。@classmethod也不需要self參數(shù),但第一個參數(shù)需要是表示自身類的cls參數(shù)。

如果在@staticmethod中要調(diào)用到這個類的一些屬性方法,只能直接類名.屬性名或類名.方法名。而@classmethod因?yàn)槌钟衏ls參數(shù),可以來調(diào)用類的屬性,類的方法,實(shí)例化對象等,避免硬編碼。下面上代碼。

class A(object): bar = 1 def foo(self): print ’foo’ @staticmethod def static_foo(): print ’static_foo’ print A.bar @classmethod def class_foo(cls): print ’class_foo’ print cls.bar cls().foo() ###執(zhí)行 A.static_foo() A.class_foo()

知識點(diǎn)擴(kuò)展:python classmethod用法

需求:添加類對象屬性,在新建具體對象時使用該變量

class A(): def __init__(self,name):self.name = nameself.config = {’batch_size’:A.bs} @classmethod def set_bs(cls,bs):cls.bs = bs def print_config(self):print (self.config) A.set_bs(4)a = A(’test’)a.print_config()

以上就是python中的class_static的@classmethod的使用的詳細(xì)內(nèi)容,更多關(guān)于python classmethod使用的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 抚松县| 隆林| 牙克石市| 政和县| 杭锦后旗| 安塞县| 长乐市| 麻栗坡县| 田东县| 桦甸市| 太保市| 德化县| 碌曲县| 淄博市| 会宁县| 虎林市| 炎陵县| 宁化县| 台中县| 望都县| 宁蒗| 富平县| 分宜县| 沧源| 商丘市| 香格里拉县| 佛教| 政和县| 德格县| 察哈| 台北县| 伊宁县| 新竹县| 北碚区| 桂林市| 都昌县| 噶尔县| 长岭县| 昆明市| 余姚市| 江北区|