簡體   English   中英

Python:動態定義類的功能

[英]Python: Dynamically define functions of a class

我想在一個類中創建一個函數,該類隨后運行多個函數。 但是執行什么功能應該取決於條件,例如可以將結果寫入磁盤,數據庫或兩者的功能。 但是,經過數百萬次的計算,我不想每次都詢問是否在該單個函數中用於數據庫或磁盤寫入的條件是True還是False的if語句。 我想知道什么是最好的解決方案。 我可以編寫某種chooseFunction(),如果條件為True,則用函數填充列表,並在編寫函數中執行該列表中的所有函數。 或創建僅具有這些功能的寫作類(如果它們滿足條件),並將它們作為寫作功能繼承給主類。 做這種事情的常用方法是什么?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM