1

Python は初めてで、関数を定義して Google App Engine で使用しようとしていますが、関数を実行しようとすると「エラー: グローバル名 'cache_email_received_list' が定義されていません」というエラーが表示され続けます。どんな助けでも大歓迎です、ありがとう。

これが私の機能です:

class EmailMessageHandler(BaseHandler2):
def cache_email_sent_list():  #set email_sent_list to memcache
    email_sent_list = db.GqlQuery("SELECT * FROM EmailMessage WHERE sender =:1 ORDER BY created DESC", user_info.username)  
    if email_sent_list:
        string1 = "email_sent_list"
        email_sent_list_cache_id = "_".join((user_info.username, string1))                  
        memcache.set('%s' % email_sent_list_cache_id, email_sent_list, time=2000000)    
        logging.info('**************email_sent_list added to memcache*********')    

ここで私はそれを呼び出そうとしています:

if email_received_list is None and email_sent_list is not None:
    params = {
    'email_sent_list': email_sent_list,         
    }
    cache_email_sent_list()
4

3 に答える 3

1

cache_email_sent_list() はクラス EmailMessageHandler のメソッドであるため、このメソッドは自分自身にパラメーターを渡す必要があるため、次のようになります。

 class EmailMessageHandler(BaseHandler2):
    def cache_email_sent_list(self):  #set email_sent_list to memcache
        email_sent_list = db.GqlQuery("SELECT * FROM EmailMessage WHERE sender =:1 ORDER BY created DESC", user_info.username)  
        if email_sent_list:
            string1 = "email_sent_list"
            email_sent_list_cache_id = "_".join((user_info.username, string1))                  
            memcache.set('%s' % email_sent_list_cache_id, email_sent_list, time=2000000)    
            logging.info('**************email_sent_list added to memcache*********') 

次に、クラス EmailMessageHandler 内から呼び出すときは、次のようにする必要があります。

self.cache_email_sent_list()  

ただし、EmailMessageHandler クラスの外から呼び出す場合は、最初にインスタンスを作成してから、次を使用して呼び出す必要があります。

instanceName.cache_email_sent_list()
于 2013-08-01T22:24:37.763 に答える