python中函数的len()

时间:2018-03-30 19:32:40

标签: python function

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

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

问题

有没有办法给一个len一个函数?一个快速的谷歌没有带来任何东西。

我的尝试

def foo():
    return True

def my_len(self):
    return 5

foo.__len__ = my_len

len(foo)

1 个答案:

答案 0 :(得分:3)

向对象添加__len__不起作用(请参阅Aran-Fey添加的link为什么)。函数只是定义__call__方法的对象。您可以定义这样的类:

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

使用它:

>>> foo=Foo()
>>> foo()
True
>>> len(foo)
5

可以创建一个具有length的函数,但您应该考虑用例。 Python为你提供了很多力量,但并不是所有可能的东西都是一个好主意。