Saya terus mendapatkan kesalahan yang mengatakan
AttributeError: 'NoneType' object has no attribute 'something'
Kode yang saya miliki terlalu panjang untuk dikirim di sini. Skenario umum apa yang akan menyebabkan ini AttributeError
, apa yang NoneType
seharusnya berarti dan bagaimana saya bisa mempersempit apa yang terjadi?
python
attributeerror
nonetype
Jacob Griffin
sumber
sumber
print
fungsi (atau pernyataan tergantung pada versi) untuk mengungkapkan nilai aktual yang sebenarnya dimiliki variabel dalam kode yang mengalami masalah ini.None
.Jawaban:
NoneType berarti bahwa alih-alih sebuah instance dari Kelas atau Obyek apa pun yang Anda pikir sedang Anda kerjakan, Anda sebenarnya memilikinya
None
. Itu biasanya berarti bahwa tugas atau fungsi panggilan di atas gagal atau mengembalikan hasil yang tidak terduga.sumber
Anda memiliki variabel yang sama dengan Tidak Ada dan Anda mencoba mengakses atribut yang disebut 'sesuatu'.
atau
Keduanya akan menghasilkan
AttributeError: 'NoneType'
sumber
None
sesuatu. Yang eksplisitfoo = None
tidak mungkin menjadi masalah; itu akan terjadifoo = something()
dan Anda tidak menyadarisomething()
akan kembaliNone
ketika tidak berhasil atau hasil yang ditetapkan kosong atau apa pun.Yang lain telah menjelaskan apa
NoneType
itu dan cara yang umum untuk mengakhiri dengan itu (yaitu, kegagalan untuk mengembalikan nilai dari suatu fungsi).Alasan umum lain yang Anda miliki di
None
tempat yang tidak Anda harapkan adalah penugasan operasi di tempat pada objek yang dapat diubah. Sebagai contoh:The
sort()
metode daftar macam daftar di tempat, yang,mylist
dimodifikasi. Tetapi nilai pengembalian aktual dari metode iniNone
dan bukan daftar yang diurutkan. Jadi Anda baru saja ditugaskanNone
untukmylist
. Jika selanjutnya Anda coba lakukan, katakanlah,mylist.append(1)
Python akan memberi Anda kesalahan ini.sumber
The
NoneType
adalah jenis nilaiNone
. Dalam hal ini, variabellifetime
memiliki nilaiNone
.Cara umum untuk membuat ini terjadi adalah memanggil fungsi yang hilang a
return
.Namun, ada banyak cara lain untuk mengatur variabel ke Tidak ada.
sumber
lifetime
memiliki nilaiNone
(pra-edit). Dia mencoba mengakses atribut seumur hidup dari sesuatu yang lainNone
.Pertimbangkan kode di bawah ini.
Ini akan memberi Anda kesalahan
Jadi poinnya seperti di bawah ini.
sumber
Ini berarti objek yang Anda coba akses
None
.None
adalahNull
variabel dalam python. Jenis kesalahan ini terjadi pada kode Anda adalah sesuatu seperti ini.sumber
gddc benar, tetapi menambahkan contoh yang sangat sering:
Anda dapat memanggil fungsi ini dalam bentuk rekursif. Dalam hal ini, Anda mungkin berakhir pada null pointer atau
NoneType
. Dalam hal ini, Anda bisa mendapatkan kesalahan ini. Jadi sebelum mengakses atribut parameter itu periksa apakah tidakNoneType
.sumber
if foo is not None:
Saat membuat estimator (sklearn), jika Anda lupa untuk mengembalikan diri dalam fungsi fit, Anda mendapatkan kesalahan yang sama.
Menambahkan
return self
ke fungsi fit memperbaiki kesalahan.sumber
Anda bisa mendapatkan kesalahan ini dengan Anda berkomentar HTML dalam aplikasi Flask. Di sini nilai untuk qual.date_expiry adalah Tidak Ada:
Hapus baris atau perbaiki:
sumber
jika kita menetapkan sesuatu seperti di bawah ini, ia akan menampilkan kesalahan sebagai "AttributeError: objek 'NoneType' tidak memiliki atribut 'tampilkan'"
sumber