为了账号安全,请及时绑定邮箱和手机立即绑定

关于Python @classmethod的问题

关于Python @classmethod的问题

赵日天l 2017-10-02 14:08:33
class RandomUserAgentMiddleware(object):     def __init__(self, crawler):         super(RandomUserAgentMiddleware, self).__init__()         self.ua = UserAgent()         self.per_proxy = crawler.settings.get('RANDOM_UA_PER_PROXY', False)         self.ua_type = crawler.settings.get('RANDOM_UA_TYPE', 'random')         self.proxy2ua = {}     @classmethod     def from_crawler(cls, crawler):         return cls(crawler)     def process_request(self, request, spider):         def get_ua():             '''Gets random UA based on the type setting (random, firefox…)'''             return getattr(self.ua, self.ua_type)         if self.per_proxy:             proxy = request.meta.get('proxy')             if proxy not in self.proxy2ua:                 self.proxy2ua[proxy] = get_ua()                 logger.debug('Assign User-Agent %s to Proxy %s'                              % (self.proxy2ua[proxy], proxy))             request.headers.setdefault('User-Agent', self.proxy2ua[proxy])         else:             ua = get_ua()             request.headers.setdefault('User-Agent', get_ua())@classmethod    def from_crawler(cls, crawler):        return cls(crawler)我知道@classmethod是个类方法cls后面打点可以调用类属性但这里cls后面加 ( ) 是个什么鬼啊?这里return出去的又是个什么东西啊?他要return给谁啊? @classmethod    def from_crawler(cls, crawler):        return cls(crawler)  他究竟想表达什么意思啊?
查看完整描述

1 回答

已采纳
?
芒果DB0

TA贡献1条经验 获得超0个赞

这是scrapy 里面获取配置信息的用法,return cls返回的信息是给类的初始化方法__init__的参数

查看完整回答
反对 回复 2017-10-04
  • 1 回答
  • 0 关注
  • 1678 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信