Python 从内置类继承

Python 从内置类继承,python,inheritance,Python,Inheritance,我想向datetime.datetime对象添加一些方法。似乎我们只能通过继承它并添加这个新方法来实现这一点。问题是这个方法需要更新基类的日/月/年值,我不能用新参数调用base init方法 我如何才能做到这一点?您可以调用基类\uuuu init\uuu方法 class Foo(datetime.datetime): def __init__(self, argument): datetime.datetime.__init__(self, argument) 这

我想向datetime.datetime对象添加一些方法。似乎我们只能通过继承它并添加这个新方法来实现这一点。问题是这个方法需要更新基类的日/月/年值,我不能用新参数调用base init方法


我如何才能做到这一点?

您可以调用基类
\uuuu init\uuu
方法

class Foo(datetime.datetime):
    def __init__(self, argument):
         datetime.datetime.__init__(self, argument)
这里的关键点是,您需要显式调用
\uuu init\uu
方法,并且需要手动提供Python通常为您提供的第一个
self
参数


另外,不要忘记调用
*
**
技术来捕获不想手动处理但仍希望能够传递给父构造函数的参数

super()。每个
\uuuu init\uuuuu
重写都应该从这个开始。这是否允许我向类Foo添加addMonth for inst方法并正确更新datetime的所有内部成员?@Dave,您当然可以添加方法,对
self
属性的任何引用都将有效并反映在所有其他属性中。但是我不确定我是否完全理解你的问题。如果你尝试添加一个方法,该方法的ex值为一个月(只需执行self.month+=1并使用2010/01/01初始化构造函数)。您将获得此异常AttributeError:datetime.date对象的属性'month'不是writable@Dave:您可以创建一个包装类,通过给它一个自定义的
\uuu getattr\uuu()
方法,自动将大多数方法调用分派给包装的datetime实例。请参阅我对问题的回答,并注意如何编写
类_渲染器
,以了解如何轻松完成此操作。如果您在问题中添加一些代码,我将发布更具体的内容。您的示例“addMonth”毫无意义。具体来说,你想添加什么方法?你能展示一个你试图添加但不起作用的方法的特定示例的代码吗(比如“addMonth”或其他什么)?