Belirli bir nesnenin belirli bir türde olup olmadığını kontrol etmenin en iyi yolu nedir? Nesnenin belirli bir türden miras alıp almadığını kontrol etmeye ne dersiniz?
Diyelim ki bir o
nesnem var. Bunun bir str
olup olmadığını nasıl kontrol edebilirim?
onun
strnin bir örneği veya
str`nin herhangi bir alt sınıfı olup olmadığını kontrol etmek için isinstance kullanın (bu "canonical" yol olacaktır):
if isinstance(o, str):
otürünün tam olarak
str` olup olmadığını kontrol etmek için (alt sınıfları hariç tutun):
if type(o) is str:
Aşağıdaki yöntem de işe yarar ve bazı durumlarda faydalı olabilir:
if issubclass(type(o), str):
İlgili bilgi için Python Kütüphane Başvurusu'ndaki Yerleşik İşlevler bölümüne bakın.
Bir not daha: bu durumda, eğer python 2 kullanıyorsanız, aslında kullanmak isteyebilirsiniz:
if isinstance(o, basestring):
çünkü bu Unicode dizeleri de yakalayacaktır (unicode
, str
nin bir alt sınıfı değildir; hem str
hem de unicode
, basestring
'in alt sınıflarıdır). Python 3'te basestring
artık mevcut değildir, burada stringler (str
) ve ikili veriler (bytes
) arasında sıkı bir ayrım vardır.
Alternatif olarak, isinstance
bir sınıf çiftini kabul eder. Bu, x (str, unicode) sınıflarından herhangi birinin alt sınıfının bir örneği ise True döndürür:
if isinstance(o, (str, unicode)):
isinstance(o, str),
obir
strise veya
strtüründen miras alan bir türdeyse
True` değerini döndürür.
type(o) is str
, sadece ve sadece o
bir str ise True
döndürür. Eğer o
türü str
türünden miras alınmış bir tür ise False
döndürür.
isinstance(o, str)