У меня есть обработчик запросов и декоратор, я хотел бы работать с объектом 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
MyHandler
> get
(функция)> self
(аргумент) 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, если я что-то делаю не так!
Спасибо!