Вы можете управлять им, используя магический метод python __dict__
почти так же, как:
fields = ['a', 'b', 'c']
class MyItem(scrapy.Item):
def __init__(self):
for f in fields:
self.__dict__[f] = scrapy.field()
my_item = MyItem()
И так далее ...
Кажется, мой предыдущий комментарий действителен для обычных классов Python, а не для класса scrapy.Item
. Следующий код работает:
from scrapy import Item, Field
fields = ['a', 'b', 'c']
def generate_item(fields):
item = Item()
for f in fields:
item.fields[f] = Field()
return item
item_instance = generate_item(fields)
item_instance['a'] = 'some_value'
item_instance['b'] = 12
print(item_instance)