Форум сайта python.su
Здравствуйте! Наконец добрался до ООП. В принципе теория понятна. Но от на практиеском примере чтото не получается. Нужно переопределить метод get в requests.session так что б после выполнения кода:
b = bot() b.get('http://googe.com') # Вывод html-кода print b.text
import requests class bot(requests.Session): def __init__(self, headers=None, cookies=None, auth=None, timeout=None, proxies=None, hooks=None, params=None, config=None, prefetch=True, verify=True, cert=None): self.text = None requests.session.__init__(self, headers=headers, cookies=cookies, auth=auth, timeout=timeout, proxies=proxies, hooks=hooks, params=params, config=config, prefetch=prefetch, verify=verify, cert=cert) def get(self, url, headers=None, cookies=None, auth=None, timeout=None, proxies=None, hooks=None, params=None, config=None, prefetch=True, verify=True, cert=None): self.text = self.get(self,url, headers=None, cookies=None, auth=None, timeout=None, proxies=None, hooks=None, params=None, config=None, prefetch=True, verify=True, cert=None).text
Отредактировано agryn (Ноя. 4, 2012 16:42:09)
Офлайн
requests.session.__init__
Офлайн
Ответ в коде, но не понятно зачем в объекте Session (Bot) иметь text? Он же есть в Response.
# -*- coding: utf-8 -*- import requests class Bot(requests.Session): # Имена классов с Большой буквы # Используем *args **kwargs потому что вручную переписывать лень # и перечень параметров часто меняется т.к. библиотека еще не дошла до 1.0 def __init__(self, *args, **kwargs): self.text = None # надеюсь, это просто пример super(Bot, self).__init__(*args, **kwargs) # или request.Session.__init__(self, *args, **kwargs) def get(self, url, *args, **kwargs): # Нужно вызывать метод базового класса # также, get должен возвращать Response response = super(Bot, self).get(url, *args, **kwargs) self.text = response.text # делаем что хотим return response # возвращаем s = Bot() print s.get("http://ya.ru").ok
Офлайн