python中函数的len()

2024-04-26 15:03:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通常接受列表的函数,但有时也需要接受函数。有几种方法可以处理这个问题,但是能够对给定函数foo执行len(foo),这将是非常有用的。在

最后,我没有传入函数,而是传入了定义了__len__函数的可调用类。但它让我思考,因为在python中,一切都是对象,函数可以有属性等等。。。在

问题

有没有办法给函数加个len?一个快速的谷歌什么也没查出来。在

我的尝试

def foo():
    return True

def my_len(self):
    return 5

foo.__len__ = my_len

len(foo)

Tags: 对象方法函数selftrue列表lenreturn
1条回答
网友
1楼 · 发布于 2024-04-26 15:03:05

向对象添加__len__无效(请参阅Aran Fey why添加的link)。函数只是定义__call__方法的对象。您可以定义这样的类:

class Foo:
  def __call__(self):
    return True
  def __len__(self):
    return 5

使用它:

^{pr2}$

可以创建一个具有length的函数,但是您应该考虑使用情况。Python为您提供了很多功能,但并不是所有可能的都是一个好主意。在

相关问题 更多 >