请求类方法之间的对象持久性

时间:2017-02-15 12:21:00

标签: python

当我使用unittest运行此代码时,context方法中的print(self.req.text)语句按预期工作,但get_page()方法中的get_html()方法会产生错误AttributeError: 'NoneType' object has no attribute 'text' 。我想知道为什么会这样。我是否犯了错误,或者是否与请求回复有关,这意味着他们无法以我尝试过的方式存储在课堂中?如果是这样,通过阅读包文档对我来说并不明显。非常感谢。

from . import helpers
import requests, bs4

class Page(object):
    """Page """

    def __init__(self, url=None):
        self.url = url
        self.req = None
        self.html = None
        self.soup = None

    def get_page(self, url):
        self.req = requests.get(url)
        print(self.req.text) # This works
        return self.req

    def get_html(self):
        print(self.req.text) # This errors
        self.html = self.req.text
        return self.html

1 个答案:

答案 0 :(得分:0)

self.req = None中的__init__似乎是原因。

您有两个选择

  • 确保在get_page()
  • 之前管理get_html
  • self.req = None中的__init__重写为self.req = self.get_page()