覆盖Python类__str__方法的最佳方法是什么?

时间:2012-08-16 03:18:21

标签: python class datetime inheritance

在我的应用中,我希望我的所有datetime.__str__()以不同的方式返回默认值。简单地继承和覆盖方法是否可以?

class datetime(datetime):
    def __str__(self):
        return self.strftime('%d-%m-%y %H:%M:%S')

任何建议都会很棒。

2 个答案:

答案 0 :(得分:3)

通常,您需要将新类命名为内置模块中定义的类以外的类,但是,这就是您的操作方法。为了您的理智,请不要使用与预定义类相同的名称创建类定义。

我只是尝试做class datetime(datetime)位,它确实有效,至少在解释器中,但任何python专家都可能会笑或不寒而栗。

答案 1 :(得分:0)

这是一个非常哲学的问题:)通常在Python中我们不喜欢这样的东西。 您现在必须使用自己的类并始终记住使用它而不是默认的datetime(如果它们具有相同的名称,则很难维护)。 Ruby家伙只会monekypatch datetime,我认为更糟糕。

我个人甚至不会用不同的名称继承它(这也会让我感到困惑),但在任何类之外制作一些快捷功能并直接使用它。