我在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):
...发布于 2012-05-06 05:47:58
可以通过以下方式更改默认值:
Wait.timeout = 20将意味着,如果未设置,则默认值为20。
例如:
>>> 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找不到实例属性,它就会查找类属性。
发布于 2012-05-06 06:06:00
从语义上讲,类属性类似于使默认超时成为类的公共接口的一部分。根据文档的不同,可能会鼓励最终用户阅读或更改默认设置。
相反,使用默认参数值强烈表明特定的默认值是实现细节,而不是由类的最终用户摆弄。
https://stackoverflow.com/questions/10466207
复制相似问题