代码之家  ›  专栏  ›  技术社区  ›  Lennart Regebro

有什么更好的替代品可以替代一个命名的复制品?

  •  8
  • Lennart Regebro  · 技术社区  · 16 年前

    采用此代码:

    >>> import urlparse
    >>> parts = urlparse.urlparse('http://docs.python.org/library/')
    >>> parts = parts._replace(path='/3.0'+parts.path)
    

    parts._replace works 但由于它是一个加下划线的方法,所以它应该是内部的,而不是被使用的。还有其他选择吗?我不想这样做:

    >>> parts = parts[:2] + ('/3.0'+parts.path,) + parts[3:]
    

    因为这使得它成为一个普通的元组,而不是一个命名的元组,并且执行以下操作:

    >>> parts = namedtuple(scheme=parts.scheme, netloc=parts.netloc, etc etc)
    

    有点傻。:)

    思想?

    1 回复  |  直到 16 年前
        1
  •  20
  •   Ignacio Vazquez-Abrams    16 年前

    原因方法 namedtuple 以初始下划线开始只是为了防止名称冲突。他们 should not be considered to be for internal use only :

    为了防止与字段名冲突,方法名和属性名以下划线开头。