偏方法partialmethod

对于python偏函数partial理解运用起来比较简单,就是对原函数某些参数设置默认值,生成一个新函数。而如果对于类方法,因为第一个参数是self,使用partial就会报错了。 对此,python3.4新引入了 partialmethod, 下面是官网实例。

>>> class Cell(object):
...     def __init__(self):
...         self._alive = False
...     @property
...     def alive(self):
...         return self._alive
...     def set_state(self, state):
...         self._alive = bool(state)
...     set_alive = partialmethod(set_state, True)
...     set_dead = partialmethod(set_state, False)
...
>>> c = Cell()
>>> c.alive
False
>>> c.set_alive()
>>> c.alive
True

简单的说,在类中,不管是普通方法,staticmethodclassmethod,还是abstractmethod,都可以当作是partial一样使用,返回的也是callablefunctools.partial对象。

不过在类外使用的话,返回的是partialmethod对象,是不能直接调用的。
PS:总觉得官网说明不太准确,因为看类中普通方法和staticmethod都是有__get__属性的,都是descriptor
参考:

  • https://stackoverflow.com/questions/36922532/python-functools-partial-how-to-apply-it-to-a-class-method-with-the-static-dec
  • https://docs.python.org/zh-cn/3/library/functools.html#functools.partialmethod

你可能感兴趣的:(偏方法partialmethod)