从scrapy.Item继承super()调用:只有Python 3.6引发TypeError:__ class__设置为<class myitem =“”>

时间:2017-02-01 14:11:39

标签: python scrapy typeerror super python-3.6

最小例子:

import scrapy

class MyItem(scrapy.Item):
    def __init__(self, key, *args, **kwargs):
        super(MyItem, self).__init__(*args, **kwargs)

它完全由Python 2.7,3.3,3.4和3.5解释, Python 3.6.0引发了TypeError异常:

TypeError: __class__ set to <class '__main__.MyItem'> defining 'MyItem' as <class '__main__.MyItem'>

如果以相同的方式覆盖任何其他方法,则Python 3.6.0引发相同的异常。为什么呢?

但是没有调用super()的类通常由Python 3.6.0解释:

import scrapy

class MyItem(scrapy.Item):
    pass

class MyItem2(scrapy.Item):
    def new_method(self):
        pass

class MyItem3(scrapy.Item):
    def __init__(self, *args, **kwargs):
        pass

我使用Scrapy 1.3,使用元类的scrapy.Item实现是here

0 个答案:

没有答案