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])
Во всех трех случаях вы должны предоставить кортеж как минимум с двумя значениями. Исходное определение __init__
требует, чтобы return_tuple
предоставлял кортеж из точно 2 элементов;модифицированный __init__
и метод класса более гибки и просто игнорируют дополнительные элементы. Вот почему я предпочитаю оригинальную __init__
(она точна относительно того, что она требует и принимает) с методом класса, который может дезинфицировать входной кортеж по мере необходимости. Вы можете игнорировать t[2:]
или вызвать исключение, если они присутствуют.