我有一個Python應用程序,我試圖在基於學校名稱的類中動態調用函數。這些學校是在單獨的模塊中/學校專業目錄:在Python中動態調用基於類名稱的函數
def __init__(self):
self.Schools = []
self.Students = []
def Load_Selected_Schools(self):
files = glob.glob('schools/*.py')
for f in files:
self.Schools.append(self.Load_School(f))
def Load_School(self, path):
modname = os.path.splitext(os.path.basename(path))[0]
mod = imp.load_source(modname, path)
return mod
每個單獨的學校模塊看起來是這樣的:
class xyz(object):
def Get_School_Name(self):
return "xyz"
def Get_Students(self):
Students = []
#code removed for clarity
#But basically I create a bunch of Student objects
Student = {}
Student['Name'] = "John Smith"
Student['School'] = "xyz"]
return Students
def Get_Student_Details(self):
# This will return student details
在這一點上我最終有像這樣的項目的數組:
{ Name: "John Smith", School: "xyz" }
{ Name: "Bob Jane", School: "abc" }
{ Name: "Jane Davis", School: "xyz" }
... etc
我想要做的就是通過這個數組迭代,然後調用Get_Student_Details功能正確的學校。因此,數組中的第一個條目應該調用xyz類中的Get_Student_Details函數,abc類中的第二個函數,xyz類中的第三個函數,每次傳入Name參數。
我對Python相當陌生,不確定如何去調用正確的類。
學校不應該是一個新的學校子類,他們應該是學校的例子。這也是爲數據庫量身定製的。 –
(聳肩)我沒有讓你失望。 –