Teorik olarak, bazen bir varsayılan ayarlamak ve bazen yapmak istemezseniz setdefaultyine de kullanışlı olacaktır . Gerçek hayatta böyle bir kullanım örneğiyle karşılaşmadım.
Bununla birlikte, ilginç bir kullanım örneği standart kitaplıktan gelir (Python 2.6, _threadinglocal.py):
>>> mydata = local()
>>> mydata.__dict__
{'number': 42}
>>> mydata.__dict__.setdefault('widgets', [])
[]
>>> mydata.widgets
[]
Kullanmanın __dict__.setdefaultoldukça faydalı bir durum olduğunu söyleyebilirim .
Düzenleme : Bu olduğu gibi, bu standart kitaplıktaki tek örnektir ve bir yorumdadır. Öyleyse varlığını haklı çıkarmak için yeterli bir durum yeterli olmayabilir setdefault. Yine de, bir açıklama:
Nesneler niteliklerini öznitelikte saklar __dict__. __dict__Gerçekleştikçe , öznitelik nesne oluşturulduktan sonra herhangi bir zamanda yazılabilir. Ayrıca bir sözlük değil defaultdict. Genel durumda objelerin sahip olması mantıklı değildir __dict__bir şekilde defaultdictbu nitelikleri olarak tüm yasal tanımlayıcıları sahip her nesneyi yapacak çünkü. Dolayısıyla, Python nesnelerinde __dict__.setdefault, yararlı olmadığı düşünülürse, onu tamamen silmenin dışında, herhangi bir değişiklikten vazgeçemem .