偏方法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
参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容