আমি আমার নিজের ধারকটি লিখছি, যার জন্য অ্যাট্রিবিউট কলগুলির মাধ্যমে একটি অভিধানে অ্যাক্সেস দেওয়া দরকার। ধারকটির সাধারণ ব্যবহারটি এরকম হবে:
dict_container = DictContainer()
dict_container['foo'] = bar
...
print dict_container.foo
আমি জানি যে এটির মতো কিছু লেখার জন্য এটি বোকামি হতে পারে তবে এটি আমার দেওয়া কার্যকারিতা provide আমি নিম্নলিখিত পদ্ধতিতে এটি বাস্তবায়নের বিষয়ে ভাবছিলাম:
def __getattribute__(self, item):
try:
return object.__getattribute__(item)
except AttributeError:
try:
return self.dict[item]
except KeyError:
print "The object doesn't have such attribute"
আমি নিশ্চিত না যে নেস্টেড চেষ্টা করা / ব্লক ব্যতীত একটি ভাল অনুশীলন যাতে অন্য উপায়টি ব্যবহার করা যায় hasattr()এবং has_key():
def __getattribute__(self, item):
if hasattr(self, item):
return object.__getattribute__(item)
else:
if self.dict.has_key(item):
return self.dict[item]
else:
raise AttributeError("some customised error")
বা তাদের মধ্যে একটি ব্যবহার করতে এবং এর জন্য একটির মতো ব্লক ধরার চেষ্টা করুন:
def __getattribute__(self, item):
if hasattr(self, item):
return object.__getattribute__(item)
else:
try:
return self.dict[item]
except KeyError:
raise AttributeError("some customised error")
কোন বিকল্পটি সর্বাধিক পাইথোনিক এবং মার্জিত?
if 'foo' in dict_container:। আমেন।