Python'da tip kontrolü yapmanın kanonik yolu nedir?
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?
1160
3
o
nun
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):o
türünün tam olarak
str` olup olmadığını kontrol etmek için (alt sınıfları hariç tutun):Aşağıdaki yöntem de işe yarar ve bazı durumlarda faydalı olabilir:
İ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:
çünkü bu Unicode dizeleri de yakalayacaktır (
unicode
,str
nin bir alt sınıfı değildir; hemstr
hem deunicode
,basestring
'in alt sınıflarıdır). Python 3'tebasestring
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: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 sadeceo
bir str iseTrue
döndürür. Eğero
türüstr
türünden miras alınmış bir tür iseFalse
döndürür.Dokümanlara bağlantı