gpt4 book ai didi

python - 在 Python 的 __init__ 中使用 *args 和 **kwargs 的语法错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:46 24 4
gpt4 key购买 nike

我正在尝试定义一个 RecurringInterval 类,它通过组合使用 dateutil.rrule 中的 rrule 类,此外还有属性 period 默认为 None。我试过以这种方式初始化它:

class RecurringInterval(object):
def __init__(self, *args, period=None, **kwargs):
self.period = period
self.rrule = dateutil.rrule.rrule(*args, **kwargs)

recurring_interval = RecurringInterval(dateutil.rrule.DAILY, count=1)

但是,我得到一个SyntaxError:

  File "/home/kurt/dev/scratch/Furion_scheduler/recurring_interval.py", line 7
def __init__(self, *args, period=None, **kwargs):
^
SyntaxError: invalid syntax

据我所知,位置参数应该出现在关键字参数之前,所以这就是我所期望的语法;我将如何纠正它? (来自 https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists 我还不清楚)。

我尝试将 period=None 向前推进,如下所示:

class RecurringInterval(object):
def __init__(self, period=None, *args, **kwargs):
self.period = period
self.rrule = dateutil.rrule.rrule(*args, **kwargs)

但这会产生一个TypeError:

Traceback (most recent call last):
File "/home/kurt/dev/scratch/Furion_scheduler/recurring_interval.py", line 9, in <module>
recurring_interval = RecurringInterval(dateutil.rrule.DAILY, count=1)
File "/home/kurt/dev/scratch/Furion_scheduler/recurring_interval.py", line 7, in __init__
self.rrule = dateutil.rrule.rrule(*args, **kwargs)
TypeError: __init__() takes at least 2 arguments (2 given)

如何以预期的方式初始化 RecurringInterval

最佳答案

应该是:

def __init__(self, period=None, *args, **kwargs):

关于python - 在 Python 的 __init__ 中使用 *args 和 **kwargs 的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40769726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com