Возьмите этот код:
>>> 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:]
Поскольку это делает это обычным кортежем, и не namedtuple и выполнением:
>>> parts = namedtuple(scheme=parts.scheme, netloc=parts.netloc, etc etc)
довольно глупо.:)
Идеи?
Причина, по которой методы nametuple
начинаются с начального знака подчеркивания, заключается только в том, чтобы предотвратить столкновение имен. Они не должны рассматриваться только для внутреннего использования:
Для предотвращения конфликтов с именами полей, имена методов и атрибутов начинаются со знака подчеркивания.