2015-05-14 5 views
2

Я использую библиотеку win32com для Python и не могу понять, как избежать зарезервированных слов Python, которые используются в MAPI для Outlook. Например, если я попытаюсь выполнить следующий код, я получу синтаксическую ошибку, потому что я использую слово «класс».Escape Зарезервированные слова для win32com

import win32com.client 


recipient = 'John Smith' 
outlook = win32com.client.Dispatch('Outlook.Application') 
namespace = outlook.GetNamespace('MAPI') 
recipient = namespace.createRecipient(recipient) 
resolved = recipient.Resolve() 
sharedCalendar = namespace.GetSharedDefaultFolder(recipient, 9) 

appointments = sharedCalendar.Items 

for i in range(len(appointments)): 

    print appointments[i].class  

Я пробовал использовать класс_ и несколько других модификаций, но до сих пор не повезло.

Благодаря

+0

Пожалуйста, включите ошибку вы получаете в этом вопросе. – AlG

+0

«Синтаксис: недействительный синтаксис» И он указывает на эту строку «Назначения печати [i] .class» – bsheehy

+2

Вы пытались «print dir (tasksments [i])' искать имена? – kratenko

ответ

1

Попробуйте это:

for i in range(len(appointments)): 
    print appointments[i].Class 

Или, как kratenko предложил:

for i in range(len(appointments)): 
    print getattr(appointments[i], 'class') 
+0

Правильный способ получить доступ к динамически разрешенному методу (как в случае с большинством методов COM-объекта), который является зарезервированным ключевым словом Python, - через getattr (см. Комментарий к вопросу, для чего это похоже). Решение, вероятно, работало, потому что win32com делает поиск без учета регистра. – Schollii

+0

@Schollii: Правильный случай - это 'Class', поэтому просто используйте' tasksments [i]. Class' - это абсолютно правильное решение. – Gabe

+0

@gabe, если это так (извините за каламбур!), Тогда решение действительно, но если бы OP действительно нуждался в зарезервированном ключе, то getattr был бы способ пойти. – Schollii