Burada bazı harika cevaplar var ve bu yüzden kendime vermeden önce burada okuduğum bazı mücevherleri vurgulamak istiyorum (yakut punta yok).
- Python saf bir OOP dili değildir - programcının en rahat oldukları paradigmayı ve / veya çözümlerine en uygun paradigmayı kullanmasına izin veren genel amaçlı, çok paradigmalı bir dildir.
- Python birinci sınıf işlevlere sahiptir, bu yüzden
lenaslında bir nesnedir. Öte yandan Ruby, birinci sınıf işlevlere sahip değildir. Böylece lenfonksiyon nesnesinin çalıştırarak inceleyebileceğiniz kendi yöntemleri vardır dir(len).
Bunun kendi kodunuzda çalışma şeklini beğenmezseniz, kapları tercih ettiğiniz yöntemi kullanarak yeniden uygulamanız önemsizdir (aşağıdaki örneğe bakın).
>>> 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
len. Onlar uygulamak için insanları zorlamak için daha kolay olduğunu düşünüyorum.__len__uygulamak için kuvvet insanlara daha.len(). Aynı şey ve biri çok daha temiz görünüyor . Dilin bir OOP'si olacaksa__len__, dünyada ne yapmak gerekirlen(..)