Можно ли перезаписать строковую форму namedtuple?

Например:

>>> Spoken = namedtuple("Spoken", ["loudness", "pitch"]) >>> s = Spoken(loudness=90, pitch='high') >>> str(s) "Spoken(loudness=90, pitch='high')" 

Я хочу:

 >>> str(s) 90 

То есть, я хочу, чтобы строковое представление отображало атрибут громкости. Это возможно ?

3 Solutions collect form web for “Можно ли перезаписать строковую форму namedtuple?”

Да, это непросто сделать, и есть пример для него в документах namedtuple .

Этот метод заключается в создании подкласса, который добавляет собственный метод str:

 >>> from collections import namedtuple >>> class Spoken(namedtuple("Spoken", ["loudness", "pitch"])): __slots__ = () def __str__(self): return str(self.loudness) >>> s = Spoken(loudness=90, pitch='high') >>> str(s) '90' 

Вы можете определить для него функцию:

 def print_loudness(self): return str(self.loudness) 

и назначьте его __str__ :

 Spoken.__str__ = print_loudness 

вы можете использовать такой код:

 from collections import namedtuple class SpokenTuple( namedtuple("Spoken", ["loudness", "pitch"]) ): def __str__(self): return str(self.loudness) s = SpokenTuple(loudness=90, pitch='high') print(str(s)) 

Это приведет к переносу namedtuple в класс по вашему выбору, который затем перегружает функцию str.

  • Как заменить слова, подсчитать слово и сохранить счет
  • Каков самый Pythonic способ использовать пустой словарь в качестве аргумента по умолчанию?
  • Загружать файлы из списка, если они еще не загружены
  • Можно ли создать карту google из python?
  • Как мне получить программу python, чтобы ничего не делать?
  • Подсчет строк, слов и символов в текстовом файле с использованием Python
  • Как избавиться от определенных предупреждающих сообщений в python, сохраняя все остальные предупреждения как обычно?
  • Сценарий Python в браузере
  • Python - лучший язык программирования в мире.