在设计类时,我发现在__init__
方法中放置默认参数值很尴尬,如:
class Class1(object):
def __init__(self, y=2, z=3):
self.y = self.manip_y(y)
self.z = self.manip_z(z)
def manip_y(self, y):
return y * 10
def manip_z(self, z):
return z - 30
将**kwargs
添加到函数签名以在函数签名中放置默认值是否为更好的做法?:
class Class2(object):
def __init__(self, **kwargs):
self.y = self.manip_y(**kwargs)
self.z = self.manip_z(**kwargs)
def manip_y(self, y=2, **kwargs):
return y * 10
def manip_z(self, z=3, **kwargs):
return z - 30
答案 0 :(得分:2)
最好在__init__
签名中添加默认值 - 这样,有人只需要查看签名即可找出选项。并且,在示例2中,默认值现在隐藏在其他函数中。此外,您的文档将更简单。
答案 1 :(得分:1)
不要这样做。为什么?因为它迫使你不仅要阅读__init__
代码来理解如何创建对象,还要阅读所有在其中调用的函数。