Saya mendapatkan kesalahan ini ketika saya menjalankan skrip python saya:
TypeError: cannot concatenate 'str' and 'NoneType' objects
Saya cukup yakin 'str' berarti string, tapi saya tidak tahu apa itu objek 'NoneType'. Skrip saya keluar di baris kedua, saya tahu yang pertama berfungsi karena perintah dari baris itu ada di asa saya seperti yang saya harapkan. Awalnya saya pikir itu mungkin karena saya menggunakan variabel dan input pengguna di dalam send_command.
Semua yang ada di 'CAPS' adalah variabel, semua yang ada di 'huruf kecil' adalah input dari opsi 'parser.add_option'.
Saya menggunakan pexpect, dan optparse
send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)
send_command(child, SNMPSRVUSRCMD + snmpuser + group + V3AUTHCMD + snmphmac + snmpauth + PRIVCMD + snmpencrypt + snmppriv)
NoneType
adalah jenis nilai tunggalNone
. Salah satu nilai Anda bukanlah string.str()
str (SNMPSRVUSRCMD) + str (snmpuser) + ...Jawaban:
NoneType
adalah jenisNone
objek, yaitu objek yang tidak menunjukkan nilai .None
adalah nilai hasil dari fungsi yang "tidak mengembalikan apa pun". Ini juga merupakan nilai pengembalian default umum untuk fungsi yang mencari sesuatu dan mungkin menemukannya atau mungkin tidak menemukannya; misalnya, ini dikembalikan olehre.search
saat regex tidak cocok, ataudict.get
saat kunci tidak memiliki entri di dikt. Anda tidak dapat menambahkanNone
string atau objek lain.Salah satu variabel Anda adalah
None
, bukan string. Mungkin Anda lupareturn
di salah satu fungsi Anda, atau mungkin pengguna tidak memberikan opsi baris perintah danoptparse
memberi AndaNone
nilai opsi itu. Saat Anda mencoba menambahkanNone
ke string, Anda mendapatkan pengecualian itu:Salah satu dari
group
atauSNMPGROUPCMD
atauV3PRIVCMD
memilikiNone
nilainya.sumber
NameError
. Ini juga bisa disetel, tetapi sama denganNone
("set to nothing" = "not set"?), Maka Anda mungkin mendapatkan beberapaTypeError
.NoneType
hanyalah tipeNone
singleton:>>> type(None) <type 'NoneType'>
Dari tautan terakhir di atas:
Dalam kasus Anda, sepertinya salah satu item yang Anda coba gabungkan adalah
None
, karenanya kesalahan Anda.sumber
Untuk kepentingan pemrograman defensif, objek harus diperiksa terhadap nullity sebelum digunakan.
if obj is None:
atau
if obj is not None:
sumber
Artinya Anda mencoba untuk menggabungkan string dengan sesuatu
None
.Tidak ada yang merupakan "null" dari Python, dan
NoneType
merupakan tipenya.Kode ini akan memunculkan jenis kesalahan yang sama:
>>> bar = "something" >>> foo = None >>> print foo + bar TypeError: cannot concatenate 'str' and 'NoneType' objects
sumber
Dengan Python, untuk merepresentasikan ketiadaan suatu nilai, Anda dapat menggunakan
None
nilainyatypes.NoneType.None
sumber
Dalam pesan kesalahan, alih-alih memberi tahu Anda bahwa Anda tidak dapat menggabungkan dua objek dengan menunjukkan nilainya (string dan
None
dalam contoh ini), penerjemah Python memberi tahu Anda hal ini dengan menunjukkan jenis objek yang Anda coba gabungkan. Jenis setiap string adalahstr
sementara jenisNone
instance tunggal dipanggilNoneType
.Anda biasanya tidak perlu mengkhawatirkan diri sendiri
NoneType
, tetapi dalam contoh ini Anda perlu mengetahuinyatype(None) == NoneType
.sumber
>>> type(key) <type 'NoneType'> >>> type(key) == NoneType Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'NoneType' is not defined
NoneType
tidak didefinisikan di mana pun (yang saya ketahui). Jika Anda ingin memeriksa apakah suatu nilaiNone
, cukup gunakankey is None
(lihat stackoverflow.com/questions/23086383/… ). Jika tidak, Anda dapat menggunakantype(key) == type(None)
efek yang sama.Kesalahan Anda terjadi karena hal seperti ini: >>>
>>> None + "hello world"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Objek None Python secara kasar setara dengan null , nil , dll. Dalam bahasa lain.
sumber
Salah satu variabel belum diberi nilai apa pun, oleh karena itu merupakan NoneType. Anda harus melihat mengapa ini terjadi, itu mungkin kesalahan logika sederhana di pihak Anda.
sumber
Nonetype adalah tipe dari a None.
Lihat dokumennya di sini: https://docs.python.org/2/library/types.html#types.NoneType
sumber