Devam edin ve isinstanceihtiyacı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 strya da unicodegibi olurdu :
import types
isinstance(var, types.StringTypes)
NB Hata types.StringTypeyapma types.StringTypes. İkincisi birleşir strve unicodenesneler.
typesModü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 strve unicodebu 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.