কেন কেবল অভিধানের কী হিসাবে বিশিষ্ট নামগুলি ব্যবহার করবেন না?
class StructMyDict(dict):
def __getattr__(self, name):
try:
return self[name]
except KeyError as e:
raise AttributeError(e)
def __setattr__(self, name, value):
self[name] = value
আপনি নামযুক্ত আর্গুমেন্ট, টিপলসের একটি তালিকা, বা একটি অভিধান, বা পৃথক বৈশিষ্ট্যযুক্ত কার্যাদি, যেমন:
nautical = StructMyDict(left = "Port", right = "Starboard") # named args
nautical2 = StructMyDict({"left":"Port","right":"Starboard"}) # dictionary
nautical3 = StructMyDict([("left","Port"),("right","Starboard")]) # tuples list
nautical4 = StructMyDict() # fields TBD
nautical4.left = "Port"
nautical4.right = "Starboard"
for x in [nautical, nautical2, nautical3, nautical4]:
print "%s <--> %s" % (x.left,x.right)
বিকল্পভাবে, গুণাবলী ত্রুটি বাড়ানোর পরিবর্তে, আপনি অজানা মানগুলির জন্য কোনওটিই ফিরিয়ে দিতে পারবেন না। (ওয়েব টুপি স্টোরেজ শ্রেণিতে ব্যবহৃত একটি কৌশল)
def __init__(self,**initial_data)
ডিআইডি পদ্ধতির অতিরিক্ত সুবিধা পেয়ে যা কীওয়ার্ড আর্গুমেন্টগুলিও করতে পারে (উদাঃ "ই = কর্মচারী (নাম = 'অস্কার'))" বা কেবল অভিধানে নিন (যেমন "ই = কর্মচারী ( ** ডিক্ট) ")।