本文简单的介绍一下,如果通过Python的类来实现一个带有存储状态的Python函数,比如这个函数可以记录自己的调用次数等。
实现的方法主要是通过类的__new__方法来让类在初始化之前就返回一个自定义的内容,也就是函数的执行结果,同时,在__new__方法也可以访问类的存储状态。下面我们看一下代码
class func_with_state:
_count = 0
def __new__(cls, *sub, **kwargs):
cls._count += 1
print(*sub, **kwargs)
代码主要就是把__new__方法作为函数的入口,并且可以在这个方法里访问和操作类的属性,从而就通过一个类的来模拟了一个带有状态的函数。这个函数实际的使用方式大概是这样的
>>> func_with_state()
>>> func_with_state('test')
test
>>> func_with_state._count
2
看见看到函数的调用次数就被记录在了._count属性中。
当然,只有在比较特殊的情况下才需要使用这样的方式,毕竟这样隐藏了很多状态,比较容易带来一些混乱。

442

被折叠的 条评论
为什么被折叠?



