Как эффективнее вызвать функцию внутри класса? - PullRequest
5 голосов
/ 14 апреля 2020

Я строю модель с Python, используя метод класса, и внутри класса есть сервальные функции.

Структура моей модели примерно такая:

class testing ():
    def __init__ (self, number, lane, position):
        self.number = number
        self.lane = lane
        self.position = position
    def function_a (self):
        print('function_a')
    def function_b(self):
        print('function_b')
    def function_c(self):
        print('function_c')
    def function_d(self):
        print('function_d')

Функция b должна запускаться после срабатывания функции a. Итак, я пишу другую функцию для решения этой проблемы, где r1 , r2 r3 - это имя каждого объекта в классе. Структура этой функции такова:

def A_then_B ():
    r1.function_a()
    r2.function_a()
    r3.function_a()
    r1.function_b()
    r2.function_b()
    r3.function_b()

Хорошо выглядит только с 3 объектами, однако в методе класса 24 объекта. И сама функция станет очень длинной и недостаточно эффективной. Итак, как я могу изменить свою функцию, чтобы она не была слишком длинной при выполнении одной и той же работы (все объекты вызывают функцию a, а затем - функцию b)?

1 Ответ

5 голосов
/ 14 апреля 2020

Поместите ваши объекты в коллекцию и переберите их:

def A_then_B ():
   objects = (r1, r2)   # add as many as you have here
   for r in objects:
       r.function_a()
   for r in objects:
       r.function_b()

Еще лучше, передайте объекты в ваши функции:

def A_then_B(objects):
   for r in objects:
       r.function_a()
   for r in objects:
       r.function_b()

def C_then_D(objects):
   for r in objects:
       r.function_c()
   for r in objects:
       r.function_d()

objects = (r1, r2)   # add as many as you have here
A_then_B(objects)
C_then_D(objects)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...