a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true
sumber
a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true
Dalam versi Python sebelum 3.0 ada dua jenis string "string polos" dan "string unicode". String polos ( str
) tidak dapat mewakili karakter di luar alfabet Latin (mengabaikan detail halaman kode untuk kesederhanaan). String Unicode ( unicode
) dapat mewakili karakter dari alfabet apa pun termasuk beberapa yang fiksi seperti Klingon.
Jadi mengapa memiliki dua jenis string, bukankah lebih baik hanya memiliki Unicode karena itu akan mencakup semua kasus? Yah lebih baik hanya memiliki Unicode tetapi Python dibuat sebelum Unicode adalah metode yang disukai untuk mewakili string. Dibutuhkan waktu untuk mentransisikan tipe string dalam bahasa dengan banyak pengguna, dengan Python 3.0 akhirnya semua string adalah Unicode.
Hirarki warisan string Python pra-3.0 adalah:
object
|
|
basestring
/ \
/ \
str unicode
'basestring' diperkenalkan di Python 2.3 dapat dianggap sebagai langkah ke arah string unifikasi karena dapat digunakan untuk memeriksa apakah sebuah objek adalah instance dari str
atauunicode
>>> string1 = "I am a plain string"
>>> string2 = u"I am a unicode string"
>>> isinstance(string1, str)
True
>>> isinstance(string2, str)
False
>>> isinstance(string1, unicode)
False
>>> isinstance(string2, unicode)
True
>>> isinstance(string1, basestring)
True
>>> isinstance(string2, basestring)
True
str
danbyte
masih daribasestring
? Layak menambahkan catatan tentang ini.basestring
danstr
danbytes
kedua subkelasobject
secara langsung. Tetapi perhatikan bahwa ini masuk akal, karena Py2str
tidak sama dengan Py3bytes
.basestring
harus dianggap sebagai "karakter string", yang hanya dimiliki oleh Py3str
. Karenanya2to3
alat ini digantibasestring
denganstr
.Semua string adalah basestrings, tetapi string unicode bukan tipe str. Coba ini sebagai gantinya:
sumber
Sungguh apa yang Anda tanyakan adalah perbedaan antara kelas dasar dan kelas str.
Str adalah kelas yang diwarisi dari basestr. Tetapi string unicode juga ada, seperti yang lainnya, jika Anda ingin membuatnya.
sumber
Basestring adalah superclass dari string. Dalam contoh Anda, a adalah tipe "str" dengan demikian, ia adalah basestring, dan str
sumber