Как получить значения словаря в Python? - PullRequest
0 голосов
/ 13 марта 2012

У меня есть словарь методов в 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 '.И эти определения не должны иметь такие же результаты.

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Кажется, ваша функция dict делает не то, что нужно.При определении своего слова вы назначаете ключи на результат функции, а не на объект функции.Если вы сопоставите его с объектом-функцией, функция будет вызвана при вызове functions.get(filename)()

Вероятно, ваш дикт должен выглядеть следующим образом:

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
}
0 голосов
/ 13 марта 2012

Словари не упорядочены, поэтому последний объект, возвращенный после итерации по dict, вероятно, не будет последним элементом, вставленным в этот dict.

functions.get(filename) будет принимать текущее значение filename и искать его в functions. filename получает свое значение от self.phpfile, поэтому в вашем примере self.phpfile должно быть установлено в 'spc_summary.php'.

...