Как создать читаемую человеком строку, которая представляет объект rrule? - PullRequest
4 голосов
/ 18 февраля 2012

Мое приложение позволяет пользователям определять планирование для объектов, и они сохраняются как правила. Мне нужно перечислить эти объекты и показать что-то вроде «Ежедневно, 4:30 вечера». Есть что-то, что "симпатично форматирует" экземпляр правила?

1 Ответ

1 голос
/ 31 июля 2015

Вам просто нужно предоставить метод __str__, и он будет вызываться всякий раз, когда что-то нужно для визуализации вашего объекта в виде строки.

Например, рассмотрим следующий класс:

class rrule:
    def __init__ (self):
        self.data = ""
    def schedule (self, str):
        self.data = str
    def __str__ (self):
        if self.data.startswith("d"):
            return "Daily, %s" % (self.data[1:])
        if self.data.startswith("m"):
            return "Monthly, %s of the month" % (self.data[1:])
        return "Unknown"

, который печатает себя, используя метод __str__. Когда вы запускаете следующий код для этого класса:

xyzzy = rrule()
print (xyzzy)
xyzzy.schedule ("m3rd")
print (xyzzy)
xyzzy.schedule ("d4:30pm")
print (xyzzy)

вы видите следующий вывод:

Unknown
Monthly, 3rd of the month
Daily, 4:30pm
...