Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa saya mendapat \"NameError: nama tidak ditakrifkan\" dalam Python?

Mengapa saya mendapat \"NameError: nama tidak ditakrifkan\" dalam Python?

DDD
DDDasal
2024-11-01 10:37:30497semak imbas

Why am I getting

Membetulkan "NameError: name is not definition" dalam Python

Dalam Python, ralat "NameError: name is not definition" berlaku apabila anda cuba mengakses pembolehubah atau kelas yang belum diisytiharkan atau ditakrifkan sebelum ini dalam kod. Untuk menangani isu ini, skop dan pengisytiharan pembolehubah dan kelas yang betul adalah penting.

Mari kita periksa coretan kod yang anda berikan:

<code class="python">s = Something()
s.out()

class Something:
    def out():
        print("it works")</code>

Ralat disebabkan oleh fakta bahawa kelas Something ditakrifkan selepas ia digunakan untuk mencipta tika dirinya sendiri. Dalam Python, jurubahasa mentafsir kod baris demi baris, jadi kelas Something belum diketahui pada masa baris "s = Something()" dilaksanakan.

Untuk menyelesaikan isu ini, anda perlu tentukan kelas sebelum anda menggunakannya. Berikut ialah kod yang diperbetulkan:

<code class="python">class Something:
    def out(self):
        print("it works")

s = Something()
s.out()</code>

Perhatikan bahawa kami juga menambah diri sebagai hujah pertama kepada kaedah keluar. Ini diperlukan untuk contoh kaedah dalam Python, yang beroperasi pada contoh objek tertentu. Dengan melepasi diri sebagai hujah pertama, kaedah boleh mengakses atribut contoh dan mengubah suai keadaan objek.

Dengan pembetulan ini, kod akan dijalankan tanpa NameError dan mengeluarkan "ia berfungsi" seperti yang diharapkan.

Atas ialah kandungan terperinci Mengapa saya mendapat \"NameError: nama tidak ditakrifkan\" dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn