Python: динамически определять функции класса - PullRequest
0 голосов
/ 12 июня 2019

Я хочу создать функцию в классе, который последовательно запускает ряд функций.Но то, какие функции выполняются, должно зависеть от условий, например, от функции, которая может записывать результаты на диск или в базу данных, или в то и другое.Но с миллионами вычислений мне не нужен оператор if, который спрашивал бы каждый раз, является ли условие для записи в базу данных или на диск истинным или ложным в этой единственной функции.Интересно, что является лучшим решением для этого.Я мог бы написать какую-то функцию selectedFunction (), которая заполняет список функциями, если условия истинны, и выполняет все функции из этого списка в функциях записи.Или создайте Writing Class, который имеет эти функции, только если они удовлетворяют условиям, и наследует их основному классу как функцию записи.Как обычно это делается?

1 Ответ

1 голос
/ 12 июня 2019
import sys
def log(name):
    print("running:" +  name)

def proc1():
    log ( sys._getframe().f_code.co_name)
def proc2():
    log ( sys._getframe().f_code.co_name)
def proc3():
    log ( sys._getframe().f_code.co_name)

def procA():
    log ( sys._getframe().f_code.co_name)
def procB():
    log ( sys._getframe().f_code.co_name)
def procC():
    log ( sys._getframe().f_code.co_name)

def setMyFunctions(conditions):
    # set your funtions here
    option = {
        1: [proc1, proc2, proc3],
        2: [procA, procB, procC],
    };
    return option[conditions]
# ready to run as is, just try it
x = True # change the x here to see the inpact
if (x): 
    status = 1
else:
    status = 2

toDoList = setMyFunctions(status)
i = 0; lastTask = len(toDoList)
# log the start
print ( "main started")
while i <  lastTask:
    # run or deliver your task list here
    toDoList[i]()
    i += 1
print ( "main finished")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...