开发者社区> 问答> 正文

将单方法的类转换为函数

你有一个除 init() 方法外只定义了一个方法的类。为了简化代码,你想将它转换成一个函数。

展开
收起
哦哦喔 2020-04-17 13:53:58 677 0
1 条回答
写回答
取消 提交回答
  • 大多数情况下,可以使用闭包来将单个方法的类转换成函数。 举个例子,下面示例中的类允许使用者根据某个模板方案来获取到URL链接地址。
    
    from urllib.request import urlopen
    
    class UrlTemplate:
        def __init__(self, template):
            self.template = template
    
        def open(self, **kwargs):
            return urlopen(self.template.format_map(kwargs))
    
    # Example use. Download stock data from yahoo
    yahoo = UrlTemplate('http://finance.yahoo.com/d/quotes.csv?s={names}&f={fields}')
    for line in yahoo.open(names='IBM,AAPL,FB', fields='sl1c1v'):
        print(line.decode('utf-8'))
    这个类可以被一个更简单的函数来代替:
    
    def urltemplate(template):
        def opener(**kwargs):
            return urlopen(template.format_map(kwargs))
        return opener
    
    # Example use
    yahoo = urltemplate('http://finance.yahoo.com/d/quotes.csv?s={names}&f={fields}')
    for line in yahoo(names='IBM,AAPL,FB', fields='sl1c1v'):
        print(line.decode('utf-8'))
    
    2020-04-17 13:54:09
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
继承与功能组合 立即下载
低代码开发师(初级)实战教程 立即下载