Domanda

Prendete questo codice:

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

parts._replace works ma in quanto è un metodo sottolineato, si suppone di essere interno, e non utilizzati. Esiste un'alternativa? Io non voglio fare:

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

A causa che lo rende una tupla ordinaria, e non un namedtuple, e fare:

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

è un pò stupido. :)

idee?

È stato utile?

Soluzione

La ragione metodi di namedtuple iniziano con un carattere di sottolineatura iniziale è solo per prevenire conflitti di nomi. Essi non dovrebbero essere considerati per uso interno :

  

Per evitare conflitti con i nomi dei campi, il metodo e degli attributi nomi iniziano con un carattere di sottolineatura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top