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操作中调用模型类下的函数,将模型类中的一些函数设为类方法,
既可以避免实例化模型类,又可以依然把这些函数有效组织在对应的类下。

你可能感兴趣的:(Flask RESTful API开发 利用好类方法)