我有一个通常接受列表的函数,但有时也需要接受函数。有几种方法可以解决这个问题,但是能够len(foo)为给定的函数做这件事会非常有用foo。
最后,我没有传入函数,而是传入了__len__定义了函数的可调用类。但这让我开始思考,因为在 python 中一切都是对象,函数可以具有属性等,只是出于好奇......
题
有没有办法给一个函数一个len?一个快速的谷歌没有提出任何东西。
我的尝试
def foo():
return True
def my_len(self):
return 5
foo.__len__ = my_len
len(foo)
Run Code Online (Sandbox Code Playgroud)
添加__len__到对象不起作用(请参阅Aran-Fey 添加的此链接为什么)。函数只是一个定义__call__方法的对象。您可以像这样定义一个类:
class Foo:
def __call__(self):
return True
def __len__(self):
return 5
Run Code Online (Sandbox Code Playgroud)
使用它:
>>> foo=Foo()
>>> foo()
True
>>> len(foo)
5
Run Code Online (Sandbox Code Playgroud)
可以创建一个具有 的函数length,但您应该考虑用例。Python 为您提供了强大的功能,但并非所有可能的事情实际上都是一个好主意。
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |