পাইথনে, বিল্ট-ইন ফাংশন type() এবং isinstance() ব্যবহার করা হয় একটি বস্তুর ধরন পেতে এবং পরীক্ষা করতে, যেমন একটি ভেরিয়েবল, এবং এটি একটি নির্দিষ্ট ধরনের কিনা তা নির্ধারণ করতে।
- class type(object) — Built-in Functions — Python 3.10.4 Documentation
- isinstance(object, classinfo) — Built-in Functions — Python 3.10.4 Documentation
নমুনা কোড সহ নিম্নলিখিত বিষয়বস্তু এখানে ব্যাখ্যা করা হয়েছে।
- বস্তুর ধরন প্রাপ্ত করুন এবং পরীক্ষা করুন:
type()
- বস্তুর ধরন নির্ধারণ:
type()
,isinstance()
- প্রকার () ব্যবহার করে প্রকার নির্ধারণ
- isinstance() ব্যবহার করে টাইপ নির্ধারণ করুন
- প্রকার() এবং isinstance() এর মধ্যে পার্থক্য
একটি বস্তুর ধরন নির্ধারণের পরিবর্তে, একটি বস্তুর সঠিক পদ্ধতি এবং গুণাবলী আছে কিনা তা নির্ধারণ করতে কেউ ব্যতিক্রম হ্যান্ডলিং বা অন্তর্নির্মিত ফাংশন hasattr() ব্যবহার করতে পারে।
বস্তুর ধরন প্রাপ্ত করুন এবং পরীক্ষা করুন:প্রকার()
type(object) হল একটি ফাংশন যা আর্গুমেন্ট হিসাবে পাস করা বস্তুর ধরন প্রদান করে। এটি একটি বস্তুর ধরন খুঁজে বের করতে ব্যবহার করা যেতে পারে.
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
type() এর রিটার্ন মান হল একটি টাইপ অবজেক্ট যেমন str বা int।
print(type(type('string')))
# <class 'type'>
print(type(str))
# <class 'type'>
বস্তুর ধরন নির্ধারণ:type(),isinstance()
ধরন নির্ধারণ করতে type() বা isinstance() ব্যবহার করুন।
প্রকার () ব্যবহার করে প্রকার নির্ধারণ
টাইপ() এর রিটার্ন মানকে একটি নির্বিচারে টাইপের সাথে তুলনা করে, বস্তুটি কোন প্রকারের কিনা তা নির্ধারণ করা যেতে পারে।
print(type('string') is str)
# True
print(type('string') is int)
# False
def is_str(v):
return type(v) is str
print(is_str('string'))
# True
print(is_str(100))
# False
print(is_str([0, 1, 2]))
# False
আপনি যদি নির্ধারণ করতে চান যে এটি বিভিন্ন প্রকারের একটি কিনা, ইন অপারেটর এবং একটি টিপল বা বিভিন্ন ধরণের তালিকা ব্যবহার করুন।
def is_str_or_int(v):
return type(v) in (str, int)
print(is_str_or_int('string'))
# True
print(is_str_or_int(100))
# True
print(is_str_or_int([0, 1, 2]))
# False
যুক্তির প্রকারের উপর নির্ভর করে প্রক্রিয়াকরণ পরিবর্তন করে এমন ফাংশনগুলিকে সংজ্ঞায়িত করাও সম্ভব।
def type_condition(v):
if type(v) is str:
print('type is str')
elif type(v) is int:
print('type is int')
else:
print('type is not str or int')
type_condition('string')
# type is str
type_condition(100)
# type is int
type_condition([0, 1, 2])
# type is not str or int
isinstance() ব্যবহার করে টাইপ নির্ধারণ করুন
isinstance(অবজেক্ট, ক্লাস) হল একটি ফাংশন যা সত্য প্রদান করে যদি প্রথম আর্গুমেন্টের অবজেক্টটি দ্বিতীয় আর্গুমেন্টের টাইপ বা সাবক্লাসের একটি উদাহরণ হয়।
দ্বিতীয় যুক্তিটি এক প্রকারের হতে পারে। যদি এটি উভয় প্রকারের একটি উদাহরণ হয়, তাহলে সত্য ফেরত দেওয়া হয়।
print(isinstance('string', str))
# True
print(isinstance(100, str))
# False
print(isinstance(100, (int, str)))
# True
type() ব্যবহার করে টাইপ নির্ধারণের উদাহরণের অনুরূপ একটি ফাংশন নিম্নরূপ লেখা যেতে পারে
def is_str(v):
return isinstance(v, str)
print(is_str('string'))
# True
print(is_str(100))
# False
print(is_str([0, 1, 2]))
# False
def is_str_or_int(v):
return isinstance(v, (int, str))
print(is_str_or_int('string'))
# True
print(is_str_or_int(100))
# True
print(is_str_or_int([0, 1, 2]))
# False
def type_condition(v):
if isinstance(v, str):
print('type is str')
elif isinstance(v, int):
print('type is int')
else:
print('type is not str or int')
type_condition('string')
# type is str
type_condition(100)
# type is int
type_condition([0, 1, 2])
# type is not str or int
প্রকার() এবং isinstance() এর মধ্যে পার্থক্য
type() এবং isinstance() এর মধ্যে পার্থক্য হল যে isinstance() সাবক্লাসের উদাহরণের জন্য সত্য রিটার্ন করে যা দ্বিতীয় আর্গুমেন্ট হিসাবে নির্দিষ্ট ক্লাসের উত্তরাধিকারী হয়।
উদাহরণস্বরূপ, নিম্নলিখিত সুপারক্লাস (বেস ক্লাস) এবং সাবক্লাস (উত্পন্ন শ্রেণী) সংজ্ঞায়িত করা হয়েছে
class Base:
pass
class Derive(Base):
pass
base = Base()
print(type(base))
# <class '__main__.Base'>
derive = Derive()
print(type(derive))
# <class '__main__.Derive'>
টাইপ () ব্যবহার করে টাইপ নির্ণয় শুধুমাত্র যখন টাইপ মিলে যায় তখনই সত্য হয়, কিন্তু isinstance() সুপারক্লাসের ক্ষেত্রেও সত্য ফেরত দেয়।
print(type(derive) is Derive)
# True
print(type(derive) is Base)
# False
print(isinstance(derive, Derive))
# True
print(isinstance(derive, Base))
# True
এমনকি আদর্শ প্রকারের জন্য, উদাহরণস্বরূপ, বুলিয়ান টাইপ বুল (সত্য, মিথ্যা), যত্ন নেওয়া আবশ্যক। bool হল পূর্ণসংখ্যা টাইপের একটি সাবক্লাস, তাই isinstance() এমন একটি int-এর জন্যও সত্য রিটার্ন করে যা থেকে এটি উত্তরাধিকারসূত্রে পাওয়া যায়।
print(type(True))
# <class 'bool'>
print(type(True) is bool)
# True
print(type(True) is int)
# False
print(isinstance(True, bool))
# True
print(isinstance(True, int))
# True
আপনি যদি সঠিক প্রকার নির্ধারণ করতে চান, তাহলে type(); আপনি যদি উত্তরাধিকার বিবেচনায় নিয়ে টাইপ নির্ধারণ করতে চান তবে isinstance() ব্যবহার করুন।
বিল্ট-ইন ফাংশন issubclass() এছাড়াও একটি ক্লাস অন্য ক্লাসের একটি সাবক্লাস কিনা তা নির্ধারণ করতে প্রদান করা হয়।
print(issubclass(bool, int))
# True
print(issubclass(bool, float))
# False