在Python中,如何将函数属性用作函数



在Python中,您可以定义一个函数属性"call_count";这样:

def counter(func):
def inner(*args):
inner.call_count+= 1
return func(*args)
inner.call_count= 0
return inner
def sum(a, b, c):
return a+b+c
sumCounter= counter(sum)
print(sumCounter(1,2,3))
print(sumCounter.call_count)
print(sumCounter(3,2,2))
print(sumCounter.call_count)

此打印:

6
1
7
2

如果我不想调用sumCounter.call_count,而是想调用一个函数属性sumCounter.caall_count((呢?也就是说;外观;像类方法?这是怎么做到的?

您可以有一个名为call_count的变量或一个名称为call_count的函数,但不能两者都有。在任何一种情况下,您都需要一些变量。

def counter(func):
def inner(*args):
inner._call_count+= 1
return func(*args)
inner._call_count= 0
inner.call_count = lambda: _call_count
return inner

函数是第一类对象。它们就像任何类的实例一样工作(因为它们是一个类的实例(。您可以为它们指定任何属性,包括其他函数。

def counter(func):
def inner(*args):
inner._call_count+= 1
return func(*args)

inner._call_count= 0
def call_count():
return inner._call_count
inner.call_count = call_count
return inner

相关内容

  • 没有找到相关文章

最新更新