[英]Python : creating dynamic functions
我有問題我想創建動態函數,它將根據從數據庫中檢索的值進行一些計算,我很清楚我的內部計算但是如何創建動態類的問題:
我的結構是這樣的:
class xyz:
def Project():
start = 2011-01-03
def Phase1():
effort = '2d'
def Phase2():
effort = '3d'
def Phase3():
effort = '4d'
現在想要動態生成所有PhaseX()函數,這樣任何人都可以建議我如何使用Python代碼實現這樣的功能
等待積極回復問候謝謝
我最近在同樣的問題上苦苦掙扎,我想寫下我發現為我工作的東西......使用原始的例子。 與前面的答案的不同之處在於我使用setattr來創建函數名稱(作為類的一部分)。
class xyz(object):
def __init__(self):
# I wasn't clear how you were using effort...like this?
self.effort = '0d'
def add_phases(self, phase_dict): # Take a dictionary of phases and values
for phase, value in phase_dict.items():
self.make_phase(phase, value)
def make_phase(self, phase, value):
def somephase(self): # Create a closure like @Ignacio
self.effort = str(value) + 'd'
setattr(self.__class__, "Phase" + str(phase), somephase)
tracker = xyz()
phases = {1:2, 2:1, 3:6, 4:2}
tracker.add_phases(phases)
tracker.Phase3()
assert tracker.effort == '6d'
這個答案可能假設您的意圖過於簡單,但看起來好像您想為特定函數調用設置一個值。
你會考慮以下內容嗎?
def setEffort(n):
effort = str(n)+'d'
您可以使用type函數動態創建python類或元類。 我描述了第一種方法:
myDynamicClassWithDynamicFunctions = type('ClassName', (object,), {
'phase1': aFunction,
'phase2': anotherFunction,
....})
鍵入的參數是:類名,類基(作為元組),dict中的類屬性。 當然,您可以根據需要以編程方式構造這些參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.