আমি কিছুটা অনুরূপ কিছু করতে শুরু করেছিলাম, মূলত ধারণাটি পরীক্ষা করা হয়েছিল যখনই কোনও বেস ক্লাসে কোনও পদ্ধতি উপ-শ্রেণিতে প্রয়োগ করা হয়েছিল বা হয়নি। একটি মধ্যবর্তী শ্রেণি আসলে পদ্ধতিটি বাস্তবায়ন করছিল তখন আমি সনাক্ত করতে পারি না যেভাবে আমি এটি প্রাথমিকভাবে করেছি out
এটির জন্য আমার কাজটি বেশ সহজ ছিল; একটি পদ্ধতি বৈশিষ্ট্য নির্ধারণ এবং এর উপস্থিতি পরে পরীক্ষা করে। এখানে পুরো জিনিসটির সরলীকরণ রয়েছে:
class A():
def method(self):
pass
method._orig = None
def run_method(self, *args, **kwargs):
if hasattr(self.method, '_orig'):
raise Exception('method not implemented')
self.method(*args, **kwargs)
class B(A):
pass
class C(B):
def method(self):
pass
class D(C):
pass
B().run_method()
C().run_method()
D().run_method()
আপডেট: আসলে method()
থেকে কল করুন run_method()
(এটি স্পিরিট নয়?) এবং এটিকে সমস্ত যুক্তিটি পদ্ধতিতে বিনা পরিবর্তিতভাবে পাস করার জন্য।
পিএস: এই উত্তরটি সরাসরি প্রশ্নের উত্তর দেয় না। আইএমএইচও দুটি কারণ রয়েছে যেগুলি জানতে চান কোন শ্রেণিটি একটি পদ্ধতির সংজ্ঞা দিয়েছে; প্রথমটি ডিবাগ কোডের কোনও শ্রেণীর দিকে আঙ্গুলগুলি দেখানো (যেমন ব্যতিক্রম হ্যান্ডলিংয়ের ক্ষেত্রে), এবং দ্বিতীয়টি পদ্ধতিটি পুনরায় প্রয়োগ করা হয়েছে কিনা তা নির্ধারণ করা (যেখানে পদ্ধতিটি প্রোগ্রামার দ্বারা বাস্তবায়িত হওয়া পদ্ধতিটি স্টাব)। এই উত্তরটি সেই দ্বিতীয় কেসটিকে অন্যভাবে সমাধান করে।