Как избежать магических c строк в классе field_name в python, что-то вроде nameof () в c# - PullRequest
0 голосов
/ 06 апреля 2020

например, в этом python коде.

from scrapy.loader import ItemLoader
from myproject.items import Product

def parse(self, response):
    l = ItemLoader(item=Product(), response=response)
    l.add_xpath('name', '//div[@class="product_name"]')
    l.add_xpath('name', '//div[@class="product_title"]')
    l.add_xpath('price', '//p[@id="price"]')
    l.add_css('stock', 'p#stock]')
    l.add_value('last_updated', 'today') # you can also use literal values
    return l.load_item()

Как избежать использования 'name', 'price' в качестве строки. Есть какой-то способ использования, что-то вроде

 l.add_xpath(getname(Product.name), '//div[@class="product_title"]')
 l.add_xpath((getname(Product.price), '//p[@id="price"]')

Спасибо

1 Ответ

0 голосов
/ 06 апреля 2020

Используя getattr встроенную функцию

 product = Product()
 l.add_xpath(getattr(product, 'name'), '//div[@class="product_title"]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...