我有这样的事情:MyClass(BaseClass): def __init__(self, *args, **kwargs): data = kwargs.pop('data', None) super(BaseClass, self).__init__(*args, **kwargs)BaseClass是API包装器的表示形式,它的init方法接收很多参数,例如API_KEY,API_SECRET,OAUTH_TOKEN和OUATH_TOKEN_SECRET。我的问题是有关创建MyClass实例的正确或最干净的方法是什么。我不知道这是否行得通:if __name__ == '__main__': obj = MyClass( API_KEY, API_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET, {'data': DATA} )因此,让我们假设它可行,将所有参数打包到dict中并将它们传递给MyClass更好吗?
1 回答

侃侃无极
TA贡献2051条经验 获得超10个赞
**kwargs接受关键字参数,而不是字典:
obj = MyClass(
API_KEY,
API_SECRET,
OAUTH_TOKEN,
OAUTH_TOKEN_SECRET,
data=DATA
)
当然,您可以使用**kwargs调用约定将字典仍然用作关键字参数:
obj = MyClass(
API_KEY,
API_SECRET,
OAUTH_TOKEN,
OAUTH_TOKEN_SECRET,
**{'data': DATA}
)
是否将其余参数打包到关键字参数中,完全取决于上的原始方法BaseClass。它接受那些参数作为关键字参数吗?在Python 3中,这不一定是给定的,内置的(C定义的)函数和方法也不总是接受关键字参数而不是位置参数。
添加回答
举报
0/150
提交
取消