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)
我正在尝试将 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)