У меня есть обработчик запросов и декоратор, я бы хотел работать с собственным объектом внутри декоратора
class MyHandler(webapp.RequestHandler):
@myDecorator
def get(self):
#code
Обновление: обратите внимание на разницу между первым и вторым я
class myDecorator(object):
def __init__(self, f):
self.f = f
def __call__(self):
#work with self
MyHandler
> get
(функция)> self
(аргумент)
myDecorator
> __call__
(функция)> self
(аргумент)
упомянутые выше собственные аргументы различны. Мое намерение состоит в том, чтобы получить доступ к первому я изнутри __call__
функции или найти способ сделать что-то подобное.
Привет, могу ли я получить собственный аргумент MyHandlers из функции get внутри декоратора?
Обновление 2: я хочу реализовать декоратор для работы с пользовательским логином в google app engine:
У меня есть класс (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' в объекте сеанса.
В этом конкретном случае меня интересует основная цель
Дайте мне знать ваши предложения / мнения, если я делаю что-то не так!
Спасибо!