Доступ к аргументам функции из декоратора

У меня есть обработчик запросов и декоратор, я хотел бы работать с объектом self внутри декоратора

class MyHandler(webapp.RequestHandler):

    @myDecorator
        def get(self):
            #code

Обновление: обратите внимание на разницу между первым и вторым self

class myDecorator(object):

    def __init__(self, f):
        self.f = f

    def __call__(self):
        #work with self
  1. MyHandler > get (функция)> self (аргумент)
  2. myDecorator > __ call __ (функция)> self (аргумент)

Само-аргументы, упомянутые выше, различны. Я намерен получить доступ к первому себе изнутри функции __ call __ или найти способ сделать что-то подобное.

Привет, могу ли я получить доступ к собственному аргументу MyHandlers из функции get внутри декоратора?

Update2: Я хочу реализовать декоратор для работы с пользовательским логином в движке приложений Google:

У меня есть класс (requestHandler):

class SomeHandler(webapp.RequestHandler):
    @only_registered_users
    def get(self):
        #do stuff here

И я хочу украсить функцию get, чтобы проверить, вошел ли пользователь в систему или нет:

from util.sessions import Session
import logging

class only_registered_users(object):

    def __init__(self, f):
        self.f = f

    def __call__(self):
        def decorated_get(self):
        logging.debug("request object:", self.request)
        session = Session()

        if hasattr(session, 'user_key'):
            return self.f(self)
        else:
            self.request.redirect("/login")


    return decorated_get

Я знаю, вошел ли пользователь в систему, если у него есть свойство user_key в объекте сеанса.

Это основная цель, которая меня интересует в данном конкретном случае

Дайте мне знать ваши предложения / reviews, если я что-то делаю не так!

Спасибо!

8
задан lesmana 22 May 2012 в 04:09
поделиться