成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Classmethod 自定義創(chuàng)建對象的方式

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

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

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

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

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

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

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

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

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

責(zé)任編輯:武曉燕 來源: Python七號
相關(guān)推薦

2015-02-12 15:33:43

微信SDK

2010-10-20 16:07:48

SQL用戶自定義角色

2022-05-07 10:22:32

JavaScript自定義前端

2013-05-02 14:08:18

2022-04-14 06:20:25

GNOME桌面應(yīng)用

2009-11-05 10:38:05

Visual Stud

2009-11-12 16:14:28

ADO.NET自定義對

2021-06-17 06:52:37

C#自定義異常

2021-07-15 16:41:21

Swift查詢函數(shù)

2010-08-03 16:13:01

FlexBuilder

2012-11-19 11:07:42

IBMdw

2022-08-04 18:30:59

DockerfileDocker 鏡像Linux

2024-09-11 14:46:48

C#旋轉(zhuǎn)按鈕

2015-01-14 15:06:48

定義相機

2010-01-18 15:43:35

VB.NET自定義屬性

2015-02-12 15:38:26

微信SDK

2009-07-20 13:47:08

iBATIS.NET字

2023-05-28 13:11:43

Plotly指標圖表

2019-12-02 21:29:45

Keras神經(jīng)網(wǎng)絡(luò)TensorFlow

2021-03-29 00:02:10

C#Attribute元素
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩中文在线 | 成人影院一区二区三区 | 久久久久久久一区二区三区 | 久久久久久久久国产 | 久久大陆 | 成人福利电影 | 欧美久久精品 | 久久草视频 | 免费国产一区 | 免费成人在线网站 | 在线中文字幕亚洲 | 美女啪啪国产 | 九九精品久久久 | 免费在线观看av | 91久久久www播放日本观看 | 米奇成人网 | 毛片一区二区 | 嫩草视频在线免费观看 | 在线成人av | 久久久久久久久久久国产 | 91高清在线观看 | 亚洲成av人片在线观看 | 免费看黄色国产 | 一本色道精品久久一区二区三区 | 亚洲综合精品 | 欧美精品一区三区 | 久久99一区二区 | 午夜资源| 91一区二区 | 中文字字幕在线中文乱码范文 | 91精品综合久久久久久五月天 | jizz18国产| 99视频精品 | 色本道 | 久久久久久免费看 | 亚洲视频二区 | 日日夜夜天天 | 超碰伊人久久 | 欧美福利 | 中文字幕亚洲视频 | 久久综合色综合 |