AttributeError:'Spi der'对象没有属性'table'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AttributeError:'Spi der'对象没有属性'table'相关的知识,希望对你有一定的参考价值。
我正在和scrapy一起工作。我有一个开头的蜘蛛:
class For_Spider(Spider):
name = "for"
# table = 'hello' # creating dummy attribute. will be overwritten
def start_requests(self):
self.table = self.dc # dc is passed in
我有以下管道:
class DynamicSQLlitePipeline(object):
@classmethod
def from_crawler(cls, crawler):
# Here, you get whatever value was passed through the "table" parameter
table = getattr(crawler.spider, "table")
return cls(table)
def __init__(self,table):
try:
db_path = "sqlite:///"+settings.SETTINGS_PATH+"\data.db"
db = dataset.connect(db_path)
table_name = table[0:3] # FIRST 3 LETTERS
self.my_table = db[table_name]
当我启动蜘蛛:
scrapy crawl for -a dc=input_string -a records=1
我明白了:
AttributeError: 'For_Spider' object has no attribute 'table'
如果我取消注释'table',程序将启动。我很困惑为什么'table'有效,但self.table没有。有人可以解释一下吗?
table
将起作用,因为它是For_Spider
的类属性,而self.table
就在函数范围内。 self
表示实例本身,所以在这种情况下你不需要使用它(除非你在__init__
中定义它)。
如果您尝试在函数范围之外定义self.table
,您将收到错误。
另外,尝试在两个类上使用__dict__
来查看它们的属性和功能
用表评论:
{'doc':无,'start_requests':,'name':'for','module':'builtins'})
如您所见,没有table
属性
表没有评论:
{'doc':无,'start_requests':,'table':'hello','name':'for','module':'builtins'})
我希望很清楚:>
以上是关于AttributeError:'Spi der'对象没有属性'table'的主要内容,如果未能解决你的问题,请参考以下文章
python报错提示AttributeError: 'QString' object has no attribute 'startswith'
AttributeError: 'int' object has no attribute 'log'
解决:pipenv shell报错:AttributeError: 'module' object has no attribute 'run'
Python错误:AttributeError: 'generator' object has no attribute 'next'解决办法
python出错:AttributeError: 'int' object has no attribute 'encode'
AttributeError: 'module' object has no attribute 'RAND_LIMIT_swigconstant