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
len
aslında bir nesnedir. Öte yandan Ruby, birinci sınıf işlevlere sahip değildir. Böylece len
fonksiyon 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(..)