Örnek uğruna alt sınıf yapmak istediğimi varsayalım dict
ve tüm anahtarların büyük harfle :
class capdict(dict):
def __init__(self,*args,**kwds):
super().__init__(*args,**kwds)
mod = [(k.capitalize(),v) for k,v in super().items()]
super().clear()
super().update(mod)
def __getitem__(self,key):
return super().__getitem__(key.capitalize())
def __setitem__(self,key,value):
super().__setitem__(key.capitalize(),value)
def __delitem__(self,key):
super().__detitem__(key.capitalize())
Bu bir ölçüde işe yarıyor,
>>> ex = capdict(map(reversed,enumerate("abc")))
>>> ex
{'A': 0, 'B': 1, 'C': 2}
>>> ex['a']
0
ancak elbette, yalnızca uygulamayı hatırladığım yöntemler için, örneğin
>>> 'a' in ex
False
istenen davranış değildir.
Şimdi, "çekirdek" olanlardan türetilebilen tüm yöntemleri doldurmanın tembel yolu karışacaktır collections.abc.MutableMapping
. Sadece burada işe yaramıyor. Sanırım söz konusu yöntemler ( __contains__
örnekte) zaten tarafından sağlanmıştır dict
.
Pastanı almanın ve yemenin bir yolu var mı? MutableMapping
Sadece geçersiz kıldığım yöntemleri görmemize izin vermek için biraz sihir mi?
os._Environ
.
MutableMapping
. Bkz. Büyük / küçük harfe duyarlı olmayan sözlük .