0

他の App Engine Python クラスから利用したいユーティリティ クラス メソッドがあります。

def parse_query_string_paramter(self, paramter, default=None):

        if self.request.get(paramter):

            # ...

以下のように別のクラスからこのメソッドを呼び出すときに、元のリクエストのコンテキストを渡す方法がわかりません。

import webapp2
from utilities import Utility


class Search(webapp2.RequestHandler):

    def get(self):

        utility = Utility()
        search_query = utility.parse_query_string_paramter('q')
        # ...

以下に返されるエラーは、どこから始めればよいかわかりませんが、Pythonic ソリューションには意味があります。

File "~/utilities.py", line 112, in parse_query_string_paramter
    if self.request.get(paramter):
AttributeError: 'NoneType' object has no attribute 'get'

アップデート:

Tim のソリューションのおかげで、以下の更新されたコードが機能するようになりました。

def parse_query_string_paramter(self, context, paramter, default=None):

        if context.request.get(paramter):

            # ...

self以下のように、呼び出し元のクラスから渡します。

search_query = utility.parse_query_string_paramter(self, 'q')
4

1 に答える 1

1

インスタンス化時にハンドラーからの要求をSearch引数として Utility クラスに渡すか、メソッドの引数として渡す必要がありparse_query_string_paramterます。魔法のように要求オブジェクトを取得することはできません。

余談ですが、関数のみが必要な場合に、リクエストの期間中 Utility のインスタンスによって何らかの状態が保持されていない限り、なぜ Utility クラスを使用するのかは明確ではありません。

于 2013-09-11T05:54:19.500 に答える