У меня есть скрипт Python, который управляет list
воображаемых машин, которые должны пройти выше линий данного изображения.Цепь над iterable
У меня есть класс Control
, который отслеживает все экземпляры Machine
и обновляет положение и поворот экземпляра. Из-за некоторых недостатков изображения некоторые случаи могут и будут потеряны, так что им нужно будет пересчитать их «вручную».
Проблема заключается в том, что мне нужно применить метод во всех экземплярах, выбранных и возвращенных в объекте list
, без нарушения цепочки вызовов функций.
Это то, что у меня есть:
class Control:
def __init__(self, instances):
self.machine_instances = instances
...
def get(self, elem = 0, end = None, step = 1):
return machine_instances[elem : end : step]
...
class Machine:
def __init__(self, x_position):
...
def position_recalc(self):
...
...
Это, как он должен быть использован:
ml = [Machine(int(sys.argv[i])) for i in range(1, sys.argc)]
c = Control(ml)
...
c.get(2, 4).position_recalc()
OBS: Метод Control.get()
может иметь возвращаемое значение и тип изменился.
Что вы хотите сказать? '' Get (2, 4) 'должен возвращать машины по индексам 2 и 4? – BrenBarn
Просто выполните: 'для машины в c.get (2, 4): machine.position_recalc()'. Вы можете написать функцию, которая делает это для вашего: 'def recalc_all (control, * args): для машины в control.gets (* args): machine.position_recalc()'. – Bakuriu
Не могу это сделать с помощью '__getattr__'? –