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')それでも`defspc_summary'の結果が返されました。そして、それらのdefは同じ結果になるべきではありません。

4

2 に答える 2

2

Your function dict seems to be doing the wrong thing. While defining your dict you are mapping the keys to the function result instead of the function object. If you map it to the function object the function gets called when you invoke functions.get(filename)()

Your dict should probably be like below:

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

Dictionaries are unordered, so the last object returned from iterating over a dict will probably not be the last item inserted into that dict.

functions.get(filename) is going to take the current value of filename and look it up in functions. filename gets its value from self.phpfile, so in your example self.phpfile must be set to 'spc_summary.php'.

于 2012-03-13T19:43:58.573 に答える