对于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
简单的说,在类中,不管是普通方法,staticmethod
,classmethod
,还是abstractmethod
,都可以当作是partial一样使用,返回的也是callable
的functools.partial
对象。
不过在类外使用的话,返回的是partialmethod
对象,是不能直接调用的。
PS:总觉得官网说明不太准确,因为看类中普通方法和staticmethod
都是有__get__
属性的,都是descriptor
参考:
网友评论