用方法调用python3类

时间:2017-01-29 16:34:19

标签: python python-3.x class methods instantiation

我有一个名为:scrape.py的文件。此文件包含以下类:

我尝试使用其方法调用我的班级BrickSetSpider,并在运行此parse_page_urls程序时最终返回python scrape.py的值。

然而,当我运行python scrape.py时,我得到:

  

NameError:name' response'未定义

在这一行:

page = spider.parse_se_page_url(response)

有人可以帮助我运行我的两种方法(输出g_result_list的结果吗?

非常感谢你!

2 个答案:

答案 0 :(得分:2)

少数几个:

  • 你得到NameError: name 'response' is not defined错误的原因是你没有在main范围内定义任何名为response的变量 如果不定义这样的参数,就无法使用它。
  • 此外,parse_se_page_urls还有一行

    def parse_se_page_urls(self, g_result_page):
    

    没有任何函数的实现。也应该有问题。

  • 除非遗漏了发布的代码中的内容,否则在您的第二个函数中,您使用的是g_result_page变量 - 但与响应一样,它没有定义。 您在上面的函数中有一个具有相同名称的参数,但它是该函数的局部变量,因此在第二个函数中是未知的。要将它们初始化为实例的成员,请按如下方式添加构造函数:

    def __init__(self):
        self.g_result_list = []
        self.g_result_page = []
    

    然后使用写self.g_result_page

  • 在您的第一个功能中,您有以下两行:

    set(g_result_page)
    list(g_result_page)
    

    这些行无效 - 它们会在set中创建listg_result_page但这些数据结构不会分配给任何内容,因此会在函数末尾清除

答案 1 :(得分:0)

您的代码中存在两个小错误。

首先,当你得到一个类的实例时,你不需要传入任何东西,所以你的代码变成了

spider = BrickSetSpider()

其次,您通过执行page使用变量spider.parse_page_url(response)来存储page = spider.parse_page_url(response)的输出,然后调用urls = page.parse_page_urls(result_page)。我相信你打算做的是致电urls = spider.parse_page_urls(page)

希望这有帮助。