我在Python中找到了以下开源代码:
class Wait:
timeout = 9
def __init__(self, timeout=None):
if timeout is not None:
self.timeout = timeout
...
我试图了解上面的代码是否有使用默认参数值的优点:
class Wait:
def __init__(self, timeout=9):
...
答案 0 :(得分:12)
可以通过这种方式更改默认值:
Wait.timeout = 20
意味着,如果未设置,默认值为20。
E.g:
>>> class Wait:
... timeout = 9
... def __init__(self, timeout=None):
... if timeout is not None:
... self.timeout = timeout
...
>>> a = Wait()
>>> b = Wait(9)
>>> a.timeout
9
>>> b.timeout
9
>>> Wait.timeout = 20
>>> a.timeout
20
>>> b.timeout
9
这利用了Python在没有找到实例属性的情况下查找类属性的事实。
答案 1 :(得分:0)
从语义上讲,类属性就像使类的公共接口的默认超时部分一样。根据文档,可能鼓励最终用户阅读 或者可能更改默认值。
使用默认参数值强烈建议特定的默认值是实现细节,而不是由该类的最终用户进行调整。