Допустим, у меня есть следующий фрагмент кода
(x1, y1), (x2, y2) = foo()
class Bar:
def __init__(self, x, y):
self.x = x
self.y = y
bar1 = Bar(x1, y1)
bar2 = Bar(x2, y2)
Есть ли способ избежать использования x1
, x2
и т. Д. И распаковать его непосредственно в экземпляр Bar, например, так:
bar1 = Bar()
bar2 = Bar()
bar1, bar2 = foo()
Я бы ожидал некоторый магический метод, такой как:
class Bar:
def __init__(self):
self.x = None
self.y = None
def __unpack__(self, x, y):
self.x = x
self.y = y
Но такого метода не существует (или я ошибаюсь?).Как я могу сделать это по-другому?
Предположим, что дано foo
, и я не могу изменить его для непосредственного возврата объектов.