在Python中,下面是获取元素数量的唯一方法吗?
arr.__len__()
如果是这样,为什么会有奇怪的语法?
在Python中,下面是获取元素数量的唯一方法吗?
arr.__len__()
如果是这样,为什么会有奇怪的语法?
当前回答
获取任何python对象长度的首选方法是将其作为参数传递给len函数。在内部,python将尝试调用传递对象的特殊__len__方法。
其他回答
你获取任何有意义的东西(列表、字典、元组、字符串……)的长度的方法是对它调用len。
l = [1,2,3,4]
s = 'abcde'
len(l) #returns 4
len(s) #returns 5
“奇怪”语法的原因是python内部将len(object)转换为object.__len__()。这适用于任何物体。所以,如果你在定义某个类,并且它有一个长度是有意义的,只需在它上面定义一个__len__()方法,然后就可以在这些实例上调用len。
获取任何python对象长度的首选方法是将其作为参数传递给len函数。在内部,python将尝试调用传递对象的特殊__len__方法。
只需使用len(arr):
>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1
Python使用duck类型:它不关心对象是什么,只要它有适合当前情况的接口就行。当你在一个对象上调用内置函数len()时,你实际上是在调用它的内部__len__方法。一个自定义对象可以实现这个接口,len()将返回答案,即使对象在概念上不是一个序列。
要查看完整的接口列表,请访问http://docs.python.org/reference/datamodel.html#basic-customization
Len (list_name)函数以list作为参数,它调用list的__len__()函数。