(Python)在一个模块中从__init__导入参数以便在另一个模块中使用?

时间:2014-06-11 21:00:30

标签: python

我是Python的新手,并且已经与Scrapy一起使用它来制作一些网络抓取工具。当从终端运行蜘蛛时,我可以使用" -a NAME = VALUE"设置参数,这对于将其指向不同的域特别有用。我正在尝试使用"域"参数作为另一个模块中的变量但被卡住了。这是我尝试从以下位置导入参数的模块的一部分:

class Spider(spiders.CrawlSpider):
    name = 'changelog'
    rules = (spiders.Rule(SgmlLinkExtractor(), callback='parse_item', follow=True),)

    def __init__(self, domain='WHAT_IM_TRYING_TO_FIND', *args, **kwargs):
        super(Spider, self).__init__(*args, **kwargs)
        self.domain = domain
        self.allowed_domains = [domain]
        self.start_urls = [
            'http://%s/' % domain,
            'http://%s/index.html' % domain,
            'http://%s/index.php' % domain,
        ]

在单独的模块中,尝试

之类的内容
from MyModule import Spider

variable = Spider.domain

variable = __import __ ('MyModule').Spider.domain

给了我

Class 'Spider' has no 'domain' member

非常感谢任何指导!

Scrapy的文件结构如下所示:

myproject/
__init __.py
items.py
pipelines.py
settings.py
spiders/
    __init __.py
    spider.py

1 个答案:

答案 0 :(得分:3)

domain是Spider实例的属性,而不是Spider类的实例。如果您在某处创建了domain的实例,则只能访问Spider