isinstance
আপনার প্রয়োজন হলে এগিয়ে যান এবং ব্যবহার করুন । এটি কিছুটা খারাপ, কারণ এটি কাস্টম সিকোয়েন্সগুলি, পুনরাবৃত্তিকারী এবং অন্যান্য জিনিসগুলি বাদ দেয় যা আপনার সম্ভবত প্রয়োজন হতে পারে। তবে, কখনও কখনও আপনার যদি অন্যরকম আচরণ করা প্রয়োজন তবে উদাহরণস্বরূপ, যদি কোনও স্ট্রিং পাস করে। আমার পছন্দটি স্পষ্টভাবে চেক করা str
বা এটির জন্য পছন্দ করতে হবে unicode
:
import types
isinstance(var, types.StringTypes)
বিশেষ দ্রষ্টব্য কি ভুল হচ্ছে না তে types.StringType
জন্য types.StringTypes
। পরেরটি অন্তর্ভুক্ত করে str
এবং unicode
বস্তুগুলি।
দ্য types
মডিউল, অনেকে মনে করেন শুধু বস্তুর ধরন বিরুদ্ধে সরাসরি পরীক্ষণ পক্ষে অপ্রচলিত হতে তাই যদি আপনি বরং উপরে ব্যবহার করবেন চাই, আপনি অন্যথায় স্পষ্টভাবে বিরুদ্ধে পরীক্ষা করতে পারবেন str
এবং unicode
, এভাবে:
isinstance(var, (str, unicode)):
সম্পাদনা:
আরও ভাল হয়:
isinstance(var, basestring)
সম্পাদনা শেষ করুন
এর যে কোনও একটির পরেও আপনি এমন আচরণে ফিরে যেতে পারেন যেন আপনি একটি সাধারণ ক্রম পেয়ে যাচ্ছেন, অ-সিকোয়েন্সগুলি যথাযথ ব্যতিক্রমগুলি বাড়িয়ে দেয়।
টাইপ চেকিং সম্পর্কে "দুষ্ট" জিনিসটি দেখুন এটি নয় যে আপনি কোনও নির্দিষ্ট ধরণের অবজেক্টের জন্য আলাদাভাবে আচরণ করতে চাইতে পারেন, এটি আপনি কৃত্রিমভাবে অপ্রত্যাশিত বস্তুর প্রকারের সাথে সঠিকভাবে কাজ করতে বাধা দেন যা অন্যথায় সঠিক কাজ করবে। আপনার যদি চূড়ান্ত ফ্যালব্যাক থাকে যা টাইপ-পরীক্ষিত নয়, আপনি এই বিধিনিষেধটি সরাবেন। এটি লক্ষ করা উচিত যে অত্যধিক প্রকারের পরীক্ষা করা একটি কোড গন্ধ যা এটি নির্দেশ করে যে আপনি কিছু রিফ্যাক্টরিং করতে চাইতে পারেন, তবে এর অর্থ এই নয় যে আপনি গেটো থেকে এড়ানো উচিত।