Python 用继承的类替换类方法的返回类型

Python 用继承的类替换类方法的返回类型,python,Python,我正在扩展datetime对象,因为我想重写str方法 class MyDatetime(datetime.datetime): def __str__(self): return self.strftime("%Y-%m-%dT%H:%M:%S.%fZ") 问题是,每当我开始加减时间增量时,我都会返回datetimes,而不是MyDatetimes。我可以从datetime中包含MyDatetime的构造函数,然后覆盖\uuuuuuuuuuuuuuuuuuuuuuuu

我正在扩展datetime对象,因为我想重写str方法

class MyDatetime(datetime.datetime):
    def __str__(self):
        return self.strftime("%Y-%m-%dT%H:%M:%S.%fZ")

问题是,每当我开始加减时间增量时,我都会返回datetimes,而不是MyDatetimes。我可以从datetime中包含MyDatetime的构造函数,然后覆盖
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
方法,但也可能还有其他方法,而且似乎应该。。。有什么建议吗?

在你的情况下没有简单的方法-如果你想覆盖所有可能的情况,你必须覆盖所有的数学魔术方法

Python文档中有一个完整的数学魔术方法列表:


至少这些方法的代码足够相似,因此您应该能够通过大量复制和粘贴来创建它们,只需稍加修改。

不,这正是您必须处理的方法;除非将超类方法编写为使用例如
type(self)
而不是类的名称,否则任何返回新实例的继承方法都将返回它们从中继承的类的实例。您正在体验。除了覆盖每个方法之外,没有简单的方法来处理它。这不值得。我会想出别的办法的=c) 还有,佩里,你的评论就是我对最佳答案的投票,如果它是一个答案的话……还有,@jornsharpe,
type(self)
这东西就是天才。我会在以后的课程中记住这一点。