আমি একটি এআই রাজ্য স্পেস অনুসন্ধান অ্যালগরিদম লিখছি, এবং আমার একটি জেনেরিক বর্গ রয়েছে যা দ্রুত কোনও অনুসন্ধান অ্যালগরিদম বাস্তবায়নের জন্য ব্যবহার করা যেতে পারে। একটি সাবক্লাস প্রয়োজনীয় ক্রিয়াকলাপগুলি সংজ্ঞায়িত করবে, এবং অ্যালগোরিদম বাকী কাজগুলি করবে।
এখানেই আমি আটকে যাচ্ছি: আমি বার বার পিতামাতার অবস্থা পুনরুত্পাদন করা এড়াতে চাই, তাই আমার নিম্নলিখিত ফাংশন রয়েছে যা কোনও অবস্থাতেই আইনত প্রয়োগ হতে পারে এমন ক্রিয়াকলাপগুলি ফিরিয়ে দেয়:
def get_operations(self, include_parent=True):
ops = self._get_operations()
if not include_parent and self.path.parent_op:
try:
parent_inverse = self.invert_op(self.path.parent_op)
ops.remove(parent_inverse)
except NotImplementedError:
pass
return ops
এবং ইনভার্ট_প ফাংশনটি ডিফল্টরূপে ছুড়ে দেয়।
কোনও ব্যতিক্রম ধরার চেয়ে ফাংশনটি সংজ্ঞায়িত হয়নি কিনা তা দেখার জন্য কি আরও দ্রুত উপায় আছে?
আমি দিরের সাথে উপস্থিত থাকার জন্য পরীক্ষার পাতায় কিছু ভাবছিলাম, তবে এটি ঠিক মনে হচ্ছে না। hasattr getattr কল করে এবং এটি উত্থাপিত হয় কিনা তা যাচাই করে প্রয়োগ করা হয়, যা আমি চাই না।
has_op = lambda obj, op: callable(getattr(obj, op, None))
hasattr(connection, 'invert_opt')।