Flask RESTful API开发 利用好类方法

什么是类方法(class method)?

Python开发中,我们更多使用的是实例方法(instance methods):

class Item:

  def __init__(self):
    pass

如这里的__init__(self),需要self作为第一个参数。

类方法(class methods)则有所不同:

class Item:
   
  # 需要额外装饰器
  @classmethod
  # 需要参数cls
  def find_by_name(cls, name):
    return {'Name': name}

  • 需要额外的装饰器 @classmethod
  • 实例方法中的参数self需要替换成cls

self代表实例化的对象本身,而cls则代表未实例化的类,而不是某个特定的对象。

如何调用类方法

有两种调用类方法的方式:

  • 通过类(class)
    Item.find_by_name('Jinx')

    Item类被直接作为cls参数传入。

  • 通过对象(object)

    item = Item()
    item.find_by_name('Jinx')
    

    item对象的类,即同样是Item作为cls参数传入。

RESTful API开发中类方法的应用

综上,类方法的优势之一就是不需要实例化即可调用,所以在一些特殊场合下就显得比较合适。

例如在Restful Api 开发中,如果我们遵循“资源 - 模型”关系的工程结构,很多不直接与API调用者交互的逻辑将被放入对应的模型类中。

如果想在资源类的CRUD操作中调用模型类下的函数,将模型类中的一些函数设为类方法,
既可以避免实例化模型类,又可以依然把这些函数有效组织在对应的类下。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,169评论 0 9
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,413评论 4 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,104评论 19 139
  • 晴空一鹤排云上,便引诗情到碧霄。 --刘禹锡
    iceYing阅读 475评论 2 1
  • 不知不觉 2016 就要结束了,来到公司也有大半年啦,我们移动 6 人小组也在一起有些日子啦,赶上总结的时间段,再...
    天空中的球阅读 636评论 1 5

友情链接更多精彩内容