আমি এমন একটি কাস্টম ক্লাস লিখতে চাই যা এর মতো আচরণ করে dict
- তাই, আমি উত্তরাধিকার সূত্রে পেয়েছি dict
।
যদিও আমার প্রশ্নটি হ'ল: dict
আমার __init__()
পদ্ধতিতে কি আমাকে কোনও ব্যক্তিগত সদস্য তৈরি করা দরকার ?. আমি এর বিন্দুটি দেখতে পাচ্ছি না, যেহেতু dict
যদি আমি কেবল উত্তরাধিকার সূত্রে পাই তবে আমার ইতিমধ্যে আচরণ রয়েছে dict
।
যেহেতু বেশিরভাগ উত্তরাধিকার স্নিপেটগুলি নীচের অংশের মতো দেখাচ্ছে কেন কেউ চিহ্নিত করতে পারেন?
class CustomDictOne(dict):
def __init__(self):
self._mydict = {}
# other methods follow
সরল পরিবর্তে ...
class CustomDictTwo(dict):
def __init__(self):
# initialize my other stuff here ...
# other methods follow
প্রকৃতপক্ষে, আমি মনে করি যে আমি প্রশ্নের উত্তরটি সন্দেহ করি যাতে ব্যবহারকারীরা সরাসরি আপনার অভিধানে অ্যাক্সেস করতে না পারে (যেমন তাদের দেওয়া অ্যাক্সেসের পদ্ধতিগুলি তাদের ব্যবহার করতে হবে)।
তবে অ্যারে অ্যাক্সেস অপারেটরের []
কী হবে? কীভাবে কেউ এটি বাস্তবায়ন করবে? এখনও অবধি, আমি এমন একটি উদাহরণ দেখিনি যা দেখায় যে কীভাবে []
অপারেটরকে ওভাররাইড করা যায় ।
সুতরাং যদি []
কাস্টম ক্লাসে কোনও অ্যাক্সেস ফাংশন সরবরাহ না করা হয়, উত্তরাধিকারসূত্রে প্রাপ্ত বেস পদ্ধতিগুলি কোনও আলাদা অভিধানে কাজ করবে?
পাইথনের উত্তরাধিকার সম্পর্কে আমার উপলব্ধি পরীক্ষা করার জন্য আমি নিম্নলিখিত স্নিপেটটি চেষ্টা করেছি:
class myDict(dict):
def __init__(self):
self._dict = {}
def add(self, id, val):
self._dict[id] = val
md = myDict()
md.add('id', 123)
print md[id]
আমি নিম্নলিখিত ত্রুটি পেয়েছি:
কী-এরর: <অন্তর্নির্মিত ফাংশন আইডি>
উপরের কোডটিতে কী ভুল?
আমি ক্লাসটি কীভাবে সংশোধন করব myDict
যাতে আমি এই জাতীয় কোড লিখতে পারি?
md = myDict()
md['id'] = 123
[সম্পাদনা]
আমি আমার ডেস্ক থেকে দূরে সরে যাওয়ার আগে তৈরি করা নিরীহ ত্রুটি থেকে মুক্তি পেতে উপরের কোডের নমুনাটি সম্পাদনা করেছি। এটি একটি টাইপো ছিল (আমার এটির ত্রুটি বার্তা থেকে স্পট করা উচিত ছিল)।
dict
, তবেsuper
কেবলমাত্র উদাহরণটির কাছে অর্পণ করার পরিবর্তে আপনাকে অবজেক্টটি নিজেই ব্যবহার করা উচিত (__dict__
যার অর্থ) - যার অর্থ হ'ল আপনি প্রতিটি উদাহরণের জন্য দুটি ডিক্ট তৈরি করছেন।