timedelta天不支持的类型, - 当试图制作Timedelta类的扩展版本时

时间:2017-06-18 11:36:40

标签: python datetime

我对OOP很新, - 所以这可能是一个愚蠢的问题。请温柔,请...

我想要像 public event = { month: '1990-02-19', } - 类一样创建一个类,但只需要做一些修改(例如:如果有超过1天的时间,那么它仍会输出为几小时和分钟;永远不会打印秒数)。

我的计划是将timedelta-object作为类的输入,同时扩展datetime.timedelta - 类 - 但这给了我一些问题。这是我的代码:

datetime.timedelta

它给了我这个错误:

class my_own_timedelta_class(datetime.timedelta):

  def __init__(self, timedelta_object):
    self.foo = 'bar' # not important.

test_duration = datetime.timedelta(days=3, hours=5, minutes=20, seconds=7)
testing = my_own_timedelta_class(test_duration)

为什么我会收到错误?我正在做的就是将unsupported type for timedelta days component: datetime.timedelta 传递给构造函数 - 我甚至没有对它做任何事情,它仍然抱怨!?

我还考虑过将秒数传递给timedelta_object,但我认为传递整个对象会更“干净”。

还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您目前正在尝试同时执行inheritance

class my_own_timedelta_class(datetime.timedelta)

composition

def __init__(self, timedelta_object):

这就像说#34;我的新班级一辆汽车,但它包含一辆汽车"。选择其中一个;两者都没有意义。

在这种特殊情况下,我建议进行组合,因为子类化timedelta可能很麻烦。只需从timedelta中删除继承,您就可以了:

class my_own_timedelta_class:
    def __init__(self, timedelta_object):
        self.delta= timedelta_object
        self.foo = 'bar' # not important.