AcceptsTupleOnInit
不接受元组作为参数;它接受两个独立的参数。你需要先把元组解包。
a = AcceptsTupleOnInit(*r.return_tuple())
或者,定义
__init__
接受元组
def __init__(self, t):
self.s = t[0]
self.z = t[1]
或者更好的方法是,定义一个额外的类方法来为您解包元组。
# usage:
# a = AcceptsTupleOnInit.from_tuple(r.return_tuple())
@classmethod
def from_tuple(cls, t):
return cls(t[0], t[1])
在这三种情况下,您都有责任提供至少有两个值的元组。最初的定义
__初始__
要求
return_tuple
提供一个元组
确切地
2个元素;修改的
__初始__
类方法更灵活,简单地忽略其他元素。所以我更喜欢原版的
__初始__
(关于它需要什么和接受什么是精确的)使用一个类方法,该方法可以根据需要清理输入元组。你可以选择忽略
t[2:]
,或者如果它们存在,则可以引发异常。