Silakan dan gunakan isinstance
jika Anda membutuhkannya. Ini agak jahat, karena tidak termasuk urutan kustom, iterator, dan hal-hal lain yang mungkin benar-benar Anda butuhkan. Namun, terkadang Anda perlu berperilaku berbeda jika seseorang, misalnya, melewatkan sebuah string. Preferensi saya ada untuk secara eksplisit memeriksa str
atau unicode
seperti:
import types
isinstance(var, types.StringTypes)
NB Jangan salah types.StringType
untuk types.StringTypes
. Yang terakhir menggabungkan str
dan unicode
objek.
The types
Modul dianggap oleh banyak untuk menjadi usang dalam mendukung hanya memeriksa secara langsung terhadap jenis objek, jadi jika Anda lebih suka tidak menggunakan atas, Anda alternatif dapat memeriksa secara eksplisit terhadap str
dan unicode
, seperti ini:
isinstance(var, (str, unicode)):
Edit:
Lebih baik lagi adalah:
isinstance(var, basestring)
Akhiri edit
Setelah salah satu dari ini, Anda dapat kembali berperilaku seolah-olah Anda mendapatkan urutan normal, membiarkan non-urutan meningkatkan pengecualian yang sesuai.
Melihat hal yang "jahat" tentang pengecekan tipe bukanlah bahwa Anda mungkin ingin berperilaku berbeda untuk jenis objek tertentu, itu adalah bahwa Anda secara artifisial membatasi fungsi Anda dari melakukan hal yang benar dengan jenis objek yang tidak terduga yang sebaliknya akan melakukan hal yang benar. Jika Anda memiliki fallback terakhir yang tidak dicentang, Anda menghapus batasan ini. Perlu dicatat bahwa pengecekan tipe terlalu banyak adalah bau kode yang menunjukkan bahwa Anda mungkin ingin melakukan beberapa refactoring, tetapi itu tidak berarti Anda harus menghindarinya dari getgo.