-1

いくつかの基本的な機能を備えたBlogHandlerというクラスがあります。このクラスをMainPageという別のクラスに渡します。MainPageクラスでBlogHandlerの関数を使用しようとしていますが、定義されていないと言っています。

class BlogHandler:
    def read_secure_cookie(self, name):
        cookie_val = self.request.cookies.get(name)
        return cookie_val and check_secure_val(cookie_val)


class MainPage(BlogHandler):
    def post(self):
        email = self.request.get('email')
        product = self.request.get('product')
        username = read_secure_cookie('content')

Cookieの「コンテンツ」は14|b670fedff24f182e52a1ceacf7790e02です。'cookie_val'と'cookie_val'の最初の部分(14)だけを返すにはどうすればよいですか。

ありがとう

4

2 に答える 2

2

最初のエラーについては、以下を使用する必要があります。

self.read_secure_cookie('content')

スーパークラスメソッドも。で呼び出す必要がありますself。(他の方法もありますが、これがベストプラクティスです。)

他の問題を修正する場合(複数の値を返したいと想定しています)、:の代わりにコンマを使用してandください。

return cookie_val, check_secure_val(cookie_val)

3番目の問題については、Chrisが言ったように分割します。

cookie_value.split('|')[0]

すべてを一緒に入れて:

class BlogHandler:
    def read_secure_cookie(self, name):
        cookie_val = self.request.cookies.get(name)
        return cookie_val, check_secure_val(cookie_val)

class MainPage(BlogHandler):
    def post(self):
        email = self.request.get('email')
        product = self.request.get('product')
        cookie_val, cookie_secure_val = self.read_secure_cookie('content')
        username = cookie_val.split("|")[0]

私があなたを正しく理解していなかったら、そう言ってください!

于 2012-08-01T18:55:46.470 に答える
1

read_secure_cookie BlogHandlerクラスのインスタンスメソッドです。つまり、引数としてオブジェクトが必要です。

クラスに機能を拡張して追加することでMainPage、インスタンスメソッドを継承し、Pythonのすべてのインスタンスメソッドと同じようにそれらにアクセスできるようになります。キーワードを追加する必要がありますself

username = self.read_secure_cookie('content')

2番目の質問に答えるには、内容を含む文字列myStr = '14|b670fedff24f182e52a1ceacf7790e02'を分割する最も簡単な方法は、最初に分割する文字を見つけてから、 ind = string.find('|') 2つのセクションに分割することです。

first = myStr[:ind] end = myStr[ind:]

于 2012-08-01T18:56:48.333 に答える