Devam edin ve isinstance
ihtiyacınız varsa kullanın . Özel dizileri, yinelemeleri ve gerçekten ihtiyaç duyabileceğiniz diğer şeyleri hariç tuttuğundan biraz kötüdür. Bununla birlikte, örneğin birisi bir ip geçirirse bazen farklı davranmanız gerekir. Benim tercihim açıkça kontrol etmek str
ya da unicode
gibi olurdu :
import types
isinstance(var, types.StringTypes)
NB Hata types.StringType
yapma types.StringTypes
. İkincisi birleşir str
ve unicode
nesneler.
types
Modülü yerine yukarıdaki kullanmamayı tercih eğer öyleyse, alternatif karşı açıkça kontrol edebilirsiniz, sadece nesnenin tipine karşı doğrudan kontrol lehine eskimiş birçok kişi tarafından kabul edilir str
ve unicode
bu gibi:
isinstance(var, (str, unicode)):
Düzenle:
Daha da iyisi:
isinstance(var, basestring)
Düzenlemeyi bitir
Bunlardan herhangi birinden sonra, normal bir sekans alıyormuş gibi davranmaya geri dönebilir, sekans olmayanların uygun istisnaları artırmasına izin verebilirsiniz.
Tip kontrolüyle ilgili "kötü" şeyin, belirli bir nesne türü için farklı davranmak isteyebileceğiniz değil, işlevinizi yapay olarak, doğru olanı yapacak beklenmedik nesne türleriyle doğru şeyi yapmaktan yapay olarak kısıtlamanıza bakın. Tür denetlenmeyen bir son yedeğiniz varsa, bu kısıtlamayı kaldırırsınız. Çok fazla tür kontrolünün, bazı yeniden düzenleme yapmak isteyebileceğinizi gösteren bir kod kokusu olduğu unutulmamalıdır, ancak bu mutlaka getgo'dan kaçınmanız gerektiği anlamına gelmez.