2012-02-18 2 views
4

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

+0

Не то, что я знаю, но это было бы легко написать. – Blender

+0

Существует хорошее объяснение '__repr__' и' __str__' здесь -> http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python – synthesizerpatel

+0

@synthesizerpatel Да, я прочитал , и это хорошо. Но мой вопрос больше похож на то, как это сделать, используя '__str__', так как он предназначен для конечных пользователей. –

ответ

1

Вы просто должны предоставить метод __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 
Смежные вопросы