我试图将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
我一直在研究为什么会发生这种情况但到目前为止已经出现空洞。
答案 0 :(得分:2)
您实际上并非从FullDate
派生datetime.date
。
试
import datetime
class FullDate(datetime.date):
...
但是,我不太确定这会像你希望的那样成功;在大多数实现中,datetime.date
实际上来自C库。
答案 1 :(得分:1)
您没有延长datetime.date
。尝试:
class FullDate(date):
如果省略基类(日期),实际上是扩展了object
,其构造函数中没有参数。
答案 2 :(得分:1)
两件事。首先,确保您实际上是从日期继承。其次,更常见的模式是在子类上定义新的__init__
方法。类似的东西:
def __init__(self, new_arg, *args, **kwargs):
self.new_arg = new_arg
super(child_class, self).__init__(args, kwargs)