这里有一些很好的答案,所以在我给出自己的答案之前,我想强调一下我在这里读过的一些宝石(不是红宝石双关语)。
- Python 不是纯粹的 OOP 语言,它是一种通用的多范式语言,允许程序员使用他们最熟悉的范式和/或最适合其解决方案的范式。
- Python 有一流的函数,所以
len 实际上是一个对象。另一方面,Ruby 没有一流的功能。所以len 函数对象有它自己的方法,你可以通过运行dir(len) 来检查。
如果您不喜欢这种方式在您自己的代码中的工作方式,那么您可以使用您喜欢的方法重新实现容器(参见下面的示例)。
>>> class List(list):
... def len(self):
... return len(self)
...
>>> class Dict(dict):
... def len(self):
... return len(self)
...
>>> class Tuple(tuple):
... def len(self):
... return len(self)
...
>>> class Set(set):
... def len(self):
... return len(self)
...
>>> my_list = List([1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'])
>>> my_dict = Dict({'key': 'value', 'site': 'stackoverflow'})
>>> my_set = Set({1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'})
>>> my_tuple = Tuple((1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'))
>>> my_containers = Tuple((my_list, my_dict, my_set, my_tuple))
>>>
>>> for container in my_containers:
... print container.len()
...
15
2
15
15