Bina yaklaşık **kwargs
: 20 argüman olarak alıyor ise, yerine pozisyonun anahtar kelime aracılığıyla argümanları göndermek için kullanıcıların gerektirecek şekilde daha mantıklı olabilir
: 20 argümanlar ile iyi olduğunu Kodunuzu kullanan birinin argümanları yanlış sırada alabilme şansı.
Yalnızca önceden tanımlı bir anahtar listesi alırken, korsanları kabul etmeyi ve bunları almazsanız bir ValueError'u yükseltmeyi kabul ettiğinizde, 'u düşünün. Yani **kwargs
'u kullanabilir ve sonra her şeyin orada olduğunu kontrol edebilirsiniz. Örneğin.
INITIAL_ARGS = set(['a','b','c','d','e'...])
def __init__(self, **kwargs):
if not INITIAL_ARGS.issubset(set(kwargs.iterkeys())):
raise ValueError("Class <myclass> requires 20 keyword arguments"
"only given %d" % len(kwargs))
self.__dict__.update(kwargs)
bu daha fazla veya orijinal daha Pythonic az olup olmadığından emin, ancak zaman bir ton tasarruf olur gibi daha sonra kodu kullanarak birisi garip hatalar alıyorsanız olası nedenini anlamaya çalışırken üzerinde görünüyor değil.
kendini argümanı konusunda dikkatli olmasını istiyorum, ama aksi girişlerin sayısı değişecek – lxop
Tamam görünüyor, ya bir dizi numara var olabilir mi? – HodofHod
Teşekkürler Ixop, Girdi sayısı değişmeyecek. –