首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Class属性或参数的默认值

Class属性或参数的默认值
EN

Stack Overflow用户
提问于 2012-05-06 05:40:17
回答 2查看 998关注 0票数 3

我在Python中找到了以下开源代码:

代码语言:javascript
复制
class Wait:

  timeout = 9

  def __init__(self, timeout=None):

    if timeout is not None:
        self.timeout = timeout
    ...

我正在尝试理解上面的代码与使用默认参数的值相比是否有优势:

代码语言:javascript
复制
class Wait:

   def __init__(self, timeout=9):
     ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-06 05:47:58

可以通过以下方式更改默认值:

代码语言:javascript
复制
Wait.timeout = 20

将意味着,如果未设置,则默认值为20。

例如:

代码语言:javascript
复制
>>> 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找不到实例属性,它就会查找类属性。

票数 12
EN

Stack Overflow用户

发布于 2012-05-06 06:06:00

从语义上讲,类属性类似于使默认超时成为类的公共接口的一部分。根据文档的不同,可能会鼓励最终用户阅读或更改默认设置。

相反,使用默认参数值强烈表明特定的默认值是实现细节,而不是由类的最终用户摆弄。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10466207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档