当前位置:  开发笔记 > 编程语言 > 正文

有没有len(someObj)不调用someObj的__len__函数的情况?

如何解决《有没有len(someObj)不调用someObj的__len__函数的情况?》经验,为你挑选了2个好方法。

有没有len(someObj)不调用someObj __len__函数的情况?

我最近用(成功的)努力将前者替换为后者以加速某些代码.我想确保在某些地方len(someObj)与someObj不同的边缘情况.__len__().



1> Benjamin Pet..:

如果__len__返回一个长度sys.maxsize,len()将引发异常.__len__直接打电话不是这样.(事实上__len__,除非经过,否则你可以返回任何不会被捕获的物体len().)



2> Crescent Fre..:

你看到了什么样的加速?我无法想象它是否引人注目?

来自http://mail.python.org/pipermail/python-list/2002-May/147079.html

在某些情况下没有区别,但出于几个原因使用len()是首选.

首先,不建议__methods__自己调用它们,它们应该被python的其他部分使用.

len()将在任何类型的序列对象的工作(lists,tuples,和所有). __len__只能使用__len__方法在类实例上工作.

len() 将在没有长度的对象上返回更合适的异常.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有