super().__new__ 调用:对象不带参数

super().__new__ call: Object takes no parameters

我正在尝试将 datetime.date 继承到一个带有额外参数的新对象中:

class FullDate:
    def __new__(cls, lst, date):  # initiate the date class - bit complicated
        inst = super(FullDate, cls).__new__(cls, date.year, date.month, date.day)
        # do stuff

当我尝试制作日期实例时,出现以下错误:

Traceback (most recent call last):
  File "<pyshell#55>", line 8, in <module>
    to_load = FullDate(y[key], key)
  File "/home/milo/Documents/Codes/PyFi/lib/Statement/Classes.py", line 518, in __new__
    inst = super(FullDate, cls).__new__(cls, date.year, date.month, date.day)
TypeError: object() takes no parameters

我一直在研究为什么会发生这种情况,但到目前为止一无所获。

您实际上并没有从 datetime.date 推导出 FullDate

尝试

import datetime
class FullDate(datetime.date):
...

但是,我不太确定这是否会像您希望的那样成功; datetime.date 在大多数实现中实际上来自 C 库。

您没有扩展 datetime.date。尝试:

class FullDate(date):

如果您省略基础 class(日期),您实际上是在扩展 object,它的构造函数中没有参数。

两件事。首先,确保您实际上是从日期继承。其次,更常见的模式是在子 class 上定义一个新的 __init__ 方法。类似于:

def __init__(self, new_arg, *args, **kwargs):
    self.new_arg = new_arg
    super(child_class, self).__init__(args, kwargs)