我在Python中有一个方法词典,它位于一个定义中。使用对象在类外部调用此def
。每当调用def
时,我都会返回字典中最后一项的结果。在这种情况下,我返回了def spc_summary:
的结果。
def setStyles(self):
# Assign function to file
functions = {
'app_server.php':self.app_server(),
'dcrm2nlyte.php':self.dcrm2nlyte(),
'export.php':self.export(),
'host_server.php':self.host_server(),
'spc.php':self.spc(),
'spc_approved.php':self.spc_approved(),
'spc_approved_by_dc.php':self.spc_approved_by_dc(),
'spc_by_dc.php':self.spc_by_dc(),
'spc_complete.php':self.spc_complete(),
'spc_summary.php':self.spc_summary()
}
filename = self.phpfile
functions.get(filename)
有人可以解释一下这里发生了什么吗?如果需要更多详细信息,请与我们联系。谢谢!
让我补充一些细节:
functions.get(filename)
正在检索最后一个字典项,无论文件名是什么。我做了这个=> functions('spc.php')
它仍然返回`def spc_summary'的结果。那些def不应该有相同的结果。
答案 0 :(得分:2)
你的功能字典似乎做错了。在定义dict时,您将键映射到函数结果而不是函数对象。如果将其映射到函数对象,则在调用functions.get(filename)()
你的dict应该如下所示:
functions = {
'app_server.php':self.app_server,
'dcrm2nlyte.php':self.dcrm2nlyte,
'export.php':self.export,
'host_server.php':self.host_server,
'spc.php':self.spc,
'spc_approved.php':self.spc_approved,
'spc_approved_by_dc.php':self.spc_approved_by_dc,
'spc_by_dc.php':self.spc_by_dc,
'spc_complete.php':self.spc_complete,
'spc_summary.php':self.spc_summary
}
答案 1 :(得分:0)
字典是无序的,因此迭代dict返回的最后一个对象可能不是插入该字典的最后一个项目。
functions.get(filename)
将获取filename
的当前值并在functions
中查找。 filename
从self.phpfile
获取其值,因此在您的示例self.phpfile
中必须设置为'spc_summary.php'。