我有這樣的事情:MyClass(BaseClass): def __init__(self, *args, **kwargs): data = kwargs.pop('data', None) super(BaseClass, self).__init__(*args, **kwargs)BaseClass是API包裝器的表示形式,它的init方法接收很多參數(shù),例如API_KEY,API_SECRET,OAUTH_TOKEN和OUATH_TOKEN_SECRET。我的問(wèn)題是有關(guān)創(chuàng)建MyClass實(shí)例的正確或最干凈的方法是什么。我不知道這是否行得通:if __name__ == '__main__': obj = MyClass( API_KEY, API_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET, {'data': DATA} )因此,讓我們假設(shè)它可行,將所有參數(shù)打包到dict中并將它們傳遞給MyClass更好嗎?
1 回答

侃侃無(wú)極
TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
**kwargs接受關(guān)鍵字參數(shù),而不是字典:
obj = MyClass(
API_KEY,
API_SECRET,
OAUTH_TOKEN,
OAUTH_TOKEN_SECRET,
data=DATA
)
當(dāng)然,您可以使用**kwargs調(diào)用約定將字典仍然用作關(guān)鍵字參數(shù):
obj = MyClass(
API_KEY,
API_SECRET,
OAUTH_TOKEN,
OAUTH_TOKEN_SECRET,
**{'data': DATA}
)
是否將其余參數(shù)打包到關(guān)鍵字參數(shù)中,完全取決于上的原始方法BaseClass。它接受那些參數(shù)作為關(guān)鍵字參數(shù)嗎?在Python 3中,這不一定是給定的,內(nèi)置的(C定義的)函數(shù)和方法也不總是接受關(guān)鍵字參數(shù)而不是位置參數(shù)。
添加回答
舉報(bào)
0/150
提交
取消