【发布时间】:2014-01-07 15:09:31
【问题描述】:
如果我有这样的课程:
class foo(object):
def __init__(self, a, b=None, c=None, d=None):
print a, b, c, d
还有一个像这样的派生类:
class bar(foo):
def __init__(self, *args, **kwargs):
if "c" in kwargs:
kwargs['c'] = 'else' # CHANGE C IFF IT IS PRESENT
super(bar, self).__init__(*args, **kwargs)
当有人调用这个构造函数时,他们可以这样做:
bar('a','b','c','d')
或者他们可以这样称呼它:
bar('a', c='something')
在第二种情况下,我的构造函数按计划工作,但在第一次调用的情况下,c 在 args 数组中潜行。看起来我必须注意 args 数组和 kwargs 的长度,这似乎脆弱到无法使用的地步。除了在 bar 中枚举来自 foo 的参数之外,您还能做些什么来改善这种情况? (这种做法本身有些脆弱,但更容易识别)。
【问题讨论】:
标签: python