operator
, bir nesneyi bir nesneden alan bir işlev oluşturmak için attrgetter
sağlar.Neden python'un bir tutuculuğu yoktur (ve bunu yapmak için ne gerekir)?
Neden bu, operator
(veya standart kitaplıklarda başka bir yerde) içinde yer almıyor?
def attrsetter(name):
def setter(obj, val):
setattr(obj, name, val)
return setter
Düşünebildiğim tek nedeni, bu basit yaklaşımın kırılacağı kenar durumları olmasıdır. Bu durumda, bu kenar kutuları nelerdir, böylece onları tuzağa düşürmeyi/bunlardan kaçınmayı deneyebilirim?
'itemsetter' de eksik. Bahse girerim, getter meslektaşları kadar kullanışlı olmadığından, onu eklemediler. – Bakuriu
Belki de pek çok kullanım örneği görmüyorlar. Normal olarak, bu operatörler bir değer döndürür, böylece fonksiyonel olarak kullanılabilirler, örn. 'map',' filter' vb. ile ayarlanması, bir şeylerin ayarlanması genellikle 'None' değerini döndürür. –
Ayrıca, 'attrgetter' daha fazla nitelik ve noktalı isme izin veren süslü şeyler sağladığından, muhtemelen birden çok niteliği noktalı isimlerle ayarlayabilen simetrik bir düzen oluşturmak isteyebilirsiniz. – Bakuriu