python - 覆盖 Scrapy 中的 serialize_field() 方法
问题描述
我使用 Scrapy 文档中的代码,并创建了“产品”类项
from scrapy.exporter import XmlItemExporter
class ProductXmlExporter(XmlItemExporter):
def serialize_field(self, field, name, value):
if field == 'price':
return f'$ {str(value)}'
return super(Product, self).serialize_field(field, name, value)
并且总是从命令行得到错误
return super(Product, self).serialize_field(field, name, value)
TypeError: super(Product, obj): obj must be an instance or subtype of type
我是 Python 新手,所以任何帮助都将不胜感激,并对“超级”函数进行了一些研究,但仍然不明白如何在本示例中将此类连接到代码中。
解决方案
不熟悉scrapy,但Product类与ProductXmlExporter有什么关系?super 关键字不接受不相关的类,因此您的调用应该是return super(XmlItemExporter, self).serialize_field(field, name, value)
,假设您要调用serialize_field
XmlItemExporter 的方法。
推荐阅读
- github - 所有项目 github 页面的样式都相同吗?
- go - 在沙发上设置错误
- c# - 没有互联网的移动通知(仅限本地网络)
- ajax - 使用 jQuery deferred 中止 AJAX 请求链
- bash - 如何在 Mac OS 中更改 iTerm2 中的提示?
- git - Git:如何将远程分支的上游设置到另一个远程分支?
- javascript - 如何在 bootstrap + angular 中对齐下拉菜单?
- apache-spark - 从 CsvSink 测量 Rate 源的指标
- javascript - javascript模糊焦点无限循环
- android - 无法运行安卓模拟器