日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

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

這里分享一下 classmethod 的實用小技巧。

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

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

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

傳入一個 name,初始化一個 Pet 對象,如果你覺得這太單調了,想實現非常個性的初始化方法,那么可以修改 __init__ 函數的代碼。

但是,有些情況你不能修改 __init__? 函數的代碼,比如代碼已經運行很久了,有很多地方調用了 Pet 的 __init__ 方法,如果直接修改,可能會產生很多問題。

這時候就可以借助于裝飾器 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}")

然后,可以這樣調用,輸出結果在注釋里。

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

此外,標準庫里也有很多使用 classmethod 的例子,比如 dict.fromkeys 就是一個例子:

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


本文標題:用Classmethod自定義創(chuàng)建對象的方式
本文地址:http://m.5511xx.com/article/dpdechd.html