【问题标题】:How to generate a human-readable string that represents a rrule object?如何生成表示 rrule 对象的人类可读字符串?
【发布时间】:2012-02-18 04:37:27
【问题描述】:

我的应用程序允许用户定义对象的调度,并且它们被存储为 rrule。我需要列出这些对象并显示“每日,下午 4:30”之类的内容。有什么东西可以“漂亮地格式化”一个 rrule 实例?

【问题讨论】:

  • 我不知道,但写起来很容易。
  • 这里对__repr____str__有很好的解释-> stackoverflow.com/questions/1436703/…
  • @synthesizerpatel 是的,我已经读过了,很好。但我的问题更像是如何使用__str__,因为它是为最终用户设计的。
  • @Blender 我可以为rrule 实例的部分/全部内部属性制作一个格式化字符串,但我正在寻找更自然的东西,所以任何人都可以快速看到没有“解析”这些参数的重复。
  • 你用你想要的表示覆盖 str 方法。 def __str__(self): return "%d:%d" % ( hour, minute) .. etc..

标签: python formatting rrule


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 2016-06-19
    • 1970-01-01
    • 2014-09-18
    • 2018-07-16
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多