有没有len(someObj)不调用someObj __len__函数的情况?
我最近用(成功的)努力将前者替换为后者以加速某些代码.我想确保在某些地方len(someObj)与someObj不同的边缘情况.__len__().
如果__len__返回一个长度sys.maxsize,len()将引发异常.__len__直接打电话不是这样.(事实上__len__,除非经过,否则你可以返回任何不会被捕获的物体len().)
你看到了什么样的加速?我无法想象它是否引人注目?
来自http://mail.python.org/pipermail/python-list/2002-May/147079.html
在某些情况下没有区别,但出于几个原因使用len()是首选.
首先,不建议
__methods__自己调用它们,它们应该被python的其他部分使用.
len()将在任何类型的序列对象的工作(lists,tuples,和所有).__len__只能使用__len__方法在类实例上工作.
len()将在没有长度的对象上返回更合适的异常.
| 归档时间: | 
 | 
| 查看次数: | 980 次 | 
| 最近记录: |