0

我有一个定义在 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不应该有相同的结果。

4

2 回答 2

2

您的函数 dict 似乎做错了事。在定义您的 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
}
于 2012-03-13T19:42:29.413 回答
0

字典是无序的,因此迭代字典返回的最后一个对象可能不是插入该字典的最后一个项目。

functions.get(filename)将获取 的当前值filename并在functions. filename从 获取其值self.phpfile,因此在您的示例中self.phpfile必须设置为“spc_summary.php”。

于 2012-03-13T19:43:58.573 回答