आइए उदाहरण के लिए मान लें कि मैं उपवर्ग करना चाहता हूं dictऔर सभी कुंजियों को पूंजीकृत करना है:
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())
यह एक हद तक काम करता है,
>>> ex = capdict(map(reversed,enumerate("abc")))
>>> ex
{'A': 0, 'B': 1, 'C': 2}
>>> ex['a']
0
लेकिन, ज़ाहिर है, केवल उन तरीकों के लिए जिन्हें मैंने याद किया था, उदाहरण के लिए
>>> 'a' in ex
False
वांछित व्यवहार नहीं है।
अब, "कोर" वाले से प्राप्त होने वाले सभी तरीकों को भरने का आलसी तरीका अंदर मिलाया जाएगा collections.abc.MutableMapping। केवल, यह यहाँ काम नहीं करता है। मुझे लगता है क्योंकि प्रश्न ( __contains__उदाहरण में) के तरीके पहले से ही प्रदान किए गए हैं dict।
वहाँ मेरे केक होने और इसे खाने का एक तरीका है? कुछ जादू MutableMappingकेवल उन तरीकों को देखने के लिए हैं जिन्हें मैंने ओवरराइड किया है ताकि यह उन पर आधारित दूसरों को पुन: लागू करता है?
os._Environ।
MutableMapping। केस असंवेदनशील शब्दकोश देखें ।