Python 尝试创建timedelta类的扩展版本时,timedelta days的类型不受支持

Python 尝试创建timedelta类的扩展版本时,timedelta days的类型不受支持,python,datetime,Python,Datetime,我对OOP很陌生,-所以这可能是个愚蠢的问题。请温柔一点 我想创建一个类似于datetime.timedelta-类的类,但需要做一些修改(例如:如果时间超过1天,那么它仍然会以小时和分钟的形式输出;并且不会打印秒数) 我的计划是将一个timedelta对象作为类的输入,该类还扩展了datetime.timedelta-类,但这给我带来了问题。这是我的密码: class my_own_timedelta_class(datetime.timedelta): def __init__(sel

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

我想创建一个类似于
datetime.timedelta
-类的类,但需要做一些修改(例如:如果时间超过1天,那么它仍然会以小时和分钟的形式输出;并且不会打印秒数)

我的计划是将一个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\u对象
传递给构造函数-我甚至没有对它做任何事情,它仍然抱怨

我还考虑将秒数传递给我自己的timedelta类,但我认为传递整个对象会更“干净”


还有更好的方法吗

您当前正在尝试两种方法:

以及:

这就像说“我的新课是一辆车,但它也包含一辆车”。选择一个或另一个;两者都做是没有意义的

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

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

好极了。谢谢你的回答。这很有效。我可以让您详细说明一下,为什么Python会抛出错误:
timedelta days组件不支持的类型:datetime.timedelta
?例如。。。是因为“东西是车,不能装车”还是因为“东西是车,不能装车”。我希望这个附加问题有意义。
def __init__(self, timedelta_object):
class my_own_timedelta_class:
    def __init__(self, timedelta_object):
        self.delta= timedelta_object
        self.foo = 'bar' # not important.