我在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):
...
我在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):
...
可以通过以下方式更改默认值:
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在找不到实例属性时查找类属性的特性。
_timeout=9
。 - Ethan Furman
self.timeout = 9
,在第二个示例构造函数中,你正在设置一个类变量/属性。 - Benself.x = ...
的时候,你正在设置一个实例属性。 - Gareth LattyWait.timeout
会引发attributeError
。但在第一个示例中,它不会。 - senderle