【发布时间】:2018-03-03 17:42:34
【问题描述】:
我正在尝试创建一个允许使用参数的默认值或传递给它的值进行初始化的类。此外,我希望能够将这些参数作为位置参数或关键字参数传递。它适用于关键字参数,但是,当我尝试使用任意数量的位置参数创建它时,如果我得到 TypeError: __init__() takes 1 positional argument but 2 were given
class Foo:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
args_list = OrderedDict()
args_list.update(x=1,
y=2,
z=3)
args_list.update(kwargs)
iter_args_list = enumerate(args_list)
for positional_arg in args:
(_, key_value) = next(iter_args_list)
args_list[key_value] = positional_arg
for argument_key, argument_value in args_list.items():
setattr(self, argument_key, argument_value)
【问题讨论】:
-
你得到什么类型的错误?请提供完整的追溯。
-
TypeError: __init__() takes 1 positional argument but 2 were given,编辑了主帖 -
供将来参考:始终包含错误消息(和回溯)。显然有一个错误(否则你不会问问题),但它有助于显示你遇到了什么错误。
标签: python python-3.x class arguments