ধরা যাক যে আমার কাছে ক্লাস স্যুট এবং স্যুটটির চারটি সাবক্লাস রয়েছে: হার্ট, স্প্যাড, ডায়মন্ড, ক্লাব।
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
আমার একটি পদ্ধতি রয়েছে যা পরামিতি হিসাবে স্যুট গ্রহণ করে, এটি কোনও শ্রেণীর অবজেক্ট, উদাহরণ নয়। আরও স্পষ্টতই, এটি চারটি মানের মধ্যে একটি মাত্র পেতে পারে: হার্ট, কোদাল, ডায়মন্ড, ক্লাব। আমি কীভাবে একটি দৃ make়তা জানাতে পারি যা এই জাতীয় জিনিসটি নিশ্চিত করে? কিছুটা এইরকম:
def my_method(suit):
assert(suit subclass of Suit)
...
আমি পাইথন 3 ব্যবহার করছি।
_class
, তাদের মত উপার্জন suit_class
। আমি প্রাসঙ্গিক প্রশ্নে এই জাতীয় নামকরণের প্রস্তাব দিয়েছিলাম ।
my_method(Heart)
my_method(Spade)
...
inspect.isclass
বা কেবল ব্যবহার করতে পারেন, এটি কোনও অ-শ্রেণি পাস করা হলে ত্রুটি বাড়িয়ে তুলবে। এই উত্তর দেখুন । আমি নীচের উত্তরে মন্তব্য করতাম তবে এটি কখনও দিনের আলো দেখেনি। isinstance(myvar, type)
issubclass
my_method
পরামিতি হিসাবে পেতে পারে ঠিক তা বলেছি : "এটি চারটি মানের মধ্যে একটি মাত্র পেতে পারে: হার্ট, কোদাল, ডায়মন্ড, ক্লাব"। এই মানগুলি শ্রেণীর উদাহরণ নয়, শ্রেণীর উদাহরণ নয়। এটি আমার কাছে বেশ স্পষ্ট বলে মনে হচ্ছে, যদিও আমি মনে করি আপনি অস্পষ্টতার বিষয়ে সঠিক বলেছেন কারণ উত্তরগুলি উভয় সম্ভাবনাকেই কভার করে। আপনি যদি এর জন্য আরও স্পষ্ট বাক্য পেয়ে থাকেন তবে প্রশ্ন সম্পাদনা করার জন্য আপনাকে স্বাগত জানাতে হবে। মন্তব্যের জন্য ধন্যবাদ.