<h3 dir="auto">Description</h3>
<p dir="auto">[Description of the issue]</p>
<h3 dir="auto">Steps to Reproduce</h3>
<ol dir="auto">
<li>[First Step]</li>
<li>[Second Step]</li>
<li>[and so on...]</li>
</ol>
<p dir="auto"><strong>Expected behavior:</strong> [What you expect to happen]</p>
<p dir="auto"><strong>Actual behavior:</strong> [What actually happens]</p>
<p dir="auto"><strong>Reproduces how often:</strong> [What percentage of the time does it reproduce?]</p>
<h3 dir="auto">Versions</h3>
<p dir="auto">Please paste here the output of executing <code class="notranslate">scrapy version --verbose</code> in the command line.</p>
<h3 dir="auto">Additional context</h3>
<p dir="auto">Any additional information, configuration, data or output from commands that might be necessary to reproduce or understand the issue. Please try not to include screenshots of code or the command line, paste the contents as text instead. You can use <a href="https://help.github.com/en/articles/creating-and-highlighting-code-blocks">GitHub Flavored Markdown</a> to make the text look better.</p>
<p dir="auto">this is partly bug, partly feature but you can do something like this:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="scrapy crawl dmoz -a start_requests=&quot;this&quot;"><pre class="notranslate"><code class="notranslate">scrapy crawl dmoz -a start_requests="this"
</code></pre></div>
<p dir="auto">and it will effectively overwrite spider start_requests with string "this" so that you will get</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="2015-12-10 14:19:05 [twisted] CRITICAL: Unhandled error in Deferred:


Traceback (most recent call last):
  File &quot;/home/pawel//src/scrapy/scrapy/cmdline.py&quot;, line 150, in _run_command
    cmd.run(args, opts)
  File &quot;/home/pawel/scrapy/scrapy/commands/crawl.py&quot;, line 57, in run
    self.crawler_process.crawl(spname, **opts.spargs)
  File &quot;/home/pawelsrc/scrapy/scrapy/crawler.py&quot;, line 153, in crawl
    d = crawler.crawl(*args, **kwargs)
  File &quot;/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py&quot;, line 1274, in unwindGenerator
    return _inlineCallbacks(None, gen, Deferred())
--- &lt;exception caught here&gt; ---
  File &quot;/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py&quot;, line 1128, in _inlineCallbacks
    result = g.send(result)
  File &quot;/home/pawel/src/scrapy/scrapy/crawler.py&quot;, line 72, in crawl
    start_requests = iter(self.spider.start_requests())
exceptions.TypeError: 'str' object is not callable
2015-12-10 14:19:05 [twisted] CRITICAL: "><pre class="notranslate"><code class="notranslate">2015-12-10 14:19:05 [twisted] CRITICAL: Unhandled error in Deferred:


Traceback (most recent call last):
  File "/home/pawel//src/scrapy/scrapy/cmdline.py", line 150, in _run_command
    cmd.run(args, opts)
  File "/home/pawel/scrapy/scrapy/commands/crawl.py", line 57, in run
    self.crawler_process.crawl(spname, **opts.spargs)
  File "/home/pawelsrc/scrapy/scrapy/crawler.py", line 153, in crawl
    d = crawler.crawl(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1274, in unwindGenerator
    return _inlineCallbacks(None, gen, Deferred())
--- &lt;exception caught here&gt; ---
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1128, in _inlineCallbacks
    result = g.send(result)
  File "/home/pawel/src/scrapy/scrapy/crawler.py", line 72, in crawl
    start_requests = iter(self.spider.start_requests())
exceptions.TypeError: 'str' object is not callable
2015-12-10 14:19:05 [twisted] CRITICAL: 
</code></pre></div>
<p dir="auto">I discovered this when client asked to add option to pass download_delay when scheduling. Turns out you can do this without any updates to spider, but the type will be invalid.</p>
<p dir="auto">I think it could be dangerous though, it allows lots of control over spider settings and can cause mysterious bugs, imagine you have some spider attribute that is string and someone passes this attribute from command line too. It would be unexpected for most users that command line argument can overwrite object attribute. The line responsible for this is here: <a href="https://github.com/scrapy/scrapy/blob/master/scrapy/spiders/__init__.py#L30">https://github.com/scrapy/scrapy/blob/master/scrapy/spiders/__init__.py#L30</a></p>