Pergunta

Pegue este código:

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

parts._replace works Mas como é um método sublinhado, ele deve ser interno e não usado. Existe uma alternativa? Eu não quero fazer:

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

Porque isso o torna uma tupla comum, e não um nome de nome, e fazer:

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

é meio estúpido. :)

Ideias?

Foi útil?

Solução

O motivo dos métodos de namedtuple Comece com um sublinhado inicial é apenas para evitar colisões de nome. Elas não deve ser considerado apenas para uso interno:

Para evitar conflitos com nomes de campo, o método e os nomes de atributos começam com um sublinhado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top