日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用Classmethod自定義創(chuàng)建對象的方式

這里分享一下 classmethod 的實(shí)用小技巧。

創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為黃平等服務(wù)建站,黃平等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為黃平企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

classmethod 是一個(gè)非常實(shí)用的裝飾器,可以用它來改變類創(chuàng)建對象的形為,比如說這樣一段代碼:

class Pet:
def __init__(self, name):
self.name = name

傳入一個(gè) name,初始化一個(gè) Pet 對象,如果你覺得這太單調(diào)了,想實(shí)現(xiàn)非常個(gè)性的初始化方法,那么可以修改 __init__ 函數(shù)的代碼。

但是,有些情況你不能修改 __init__? 函數(shù)的代碼,比如代碼已經(jīng)運(yùn)行很久了,有很多地方調(diào)用了 Pet 的 __init__ 方法,如果直接修改,可能會產(chǎn)生很多問題。

這時(shí)候就可以借助于裝飾器 classmethod,自定義對象的創(chuàng)建方式:

import random

class Pet:
def __init__(self, name):
self.name = name

@classmethod
def create(cls):
number = random.randint(100_000,999_999)
return cls(f"Pet_{number}")

然后,可以這樣調(diào)用,輸出結(jié)果在注釋里。

dog = Pet("Dog")
print(dog.name)
# Dog
pet = Pet.create()
print(pet.name)
# Pet_444383
print(isinstance(dog, Pet))
# True
print(isinstance(pet, Pet))
# True

此外,標(biāo)準(zhǔn)庫里也有很多使用 classmethod 的例子,比如 dict.fromkeys 就是一個(gè)例子:

>>> dict.fromkeys("ABC", 0)
{'A': 0, 'B': 0, 'C': 0}
>>> dict.fromkeys(["hello","world"])
{'hello': None, 'world': None}


網(wǎng)站標(biāo)題:用Classmethod自定義創(chuàng)建對象的方式
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/dpdechd.html