Python:动态定义类的功能

时间:2019-06-12 15:32:07

标签: python class inheritance dynamic

我想在一个类中创建一个函数,该类随后运行许多函数。但是执行什么功能应该取决于条件,例如可以将结果写入磁盘,数据库或两者的功能。但是,经过数百万次的计算,我不想每次都询问是否在该单个函数中用于数据库或磁盘写入的条件是True还是False的if语句。我想知道什么是最好的解决方案。我可以编写某种chooseFunction(),如果条件为True,则用函数填充列表,并在编写函数中执行该列表中的所有函数。或创建仅具有这些功能的写作类(如果它们满足条件),并将它们作为写作功能继承给主类。做这种事情的常用方法是什么?

1 个答案:

答案 0 :(得分:1)

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")