пользовательские спецификации формата в Python - PullRequest
2 голосов
/ 31 марта 2010

в python, как добавить спецификацию формата в класс? например, если я напишу матричный класс, я бы хотел определить «% M» (или что-то в этом роде), которое затем вывело бы все содержимое матрицы ...

спасибо

Ответы [ 3 ]

5 голосов
/ 31 марта 2010

Определение методов __str__() / __unicode__() и / или __repr__() позволит вам использовать существующие спецификаторы формата %s и %r по своему усмотрению.

0 голосов
/ 31 марта 2010

Если вы действительно хотите использовать пользовательские спецификаторы, вы не можете сделать это способом, совместимым с остальным языком Python и стандартной библиотекой. Воспользуйтесь преимуществами того, что Python уже поставляет (%s и %r), и настройте его для своих нужд, переопределив __str__() или __repr__()

class Matrix(object):
    def __str__(self):
        return convert_to_pretty_matrix_string(self)
    def __repr__(self):
        return convert_to_textual_matrix_format(self)
0 голосов
/ 31 марта 2010

Я не верю, что можно определить новый спецификатор формата для печати. Возможно, вы сможете добавить метод к вашему классу, который устанавливает используемый вами формат, и определить метод str класса, чтобы настроить его вывод в соответствии с тем, как он был установлен. Тогда основной оператор печати будет по-прежнему использовать спецификатор «% s» и будет вызывать ваш пользовательский str .

...