在不重复太多自己的情况下,初始化类的pythonic方法是什么?我经常看到的事情是,以下是浪费的事情:
class foo:
def __init__(self, a=None, b=None, c=None,...)
if a is None:
a = a_default_value()
if b is None:
b = b_default_value()
if c is None:
c = c_default_value()
assert sanity_check(a,b,c)
self.a = a
self.b = b
self.c = c
感觉是简化代码的一种方法,应该是遍历字典(特别是在输入很多的情况下):
class foo:
defaults = {
'a' : a_default_value(),
'b' : b_default_value(),
'c' : c_default_value()}
def __init__(self, **kwargs):
for key in set(self.defaults) - set(kwargs):
kwargs[key] = self.defaults[key]
assert self.sanity_check(**kwargs)
for key in kwargs:
setattr(self, key, kwargs[key])
但这看起来还很丑吗?一定有更好的方法!