winneymj13Posts. 2 Bergabung. Sab 10 November 2018 2. 19 pagi
oleh winneymj13 » Rab 06 Apr 2022 10. 03 sore
Hai,
Saya menjalankan micropython di papan Saola ESP32_S2 saya dan saya mencoba menentukan nama fungsi yang diteruskan sebagai parameter ke fungsi lain (untuk digunakan sebagai panggilan balik)
Menghasilkan kesalahan. AttributeError. objek 'fungsi' tidak memiliki atribut '__name__'
Bagaimana cara mengambil nama fungsi yang diteruskan?
Seperti yang dapat dilihat di bawah ini dalam contoh lengkap saya mencoba menambahkan metode baru ke kelas menggunakan dekorator @add_method dan berhasil. kecuali saya harus meng-hardcode nama fungsi 'foo'
Kode.
setattr(cls, 'foo', wrapper)
Yang benar-benar ingin saya lakukan adalah
Kode.
setattr(cls, func.__name__, wrapper)
_Contoh kode lengkap
Kode.
def add_method(cls):
def decorator(func):
@wraps(func)
def wrapper(self, *args, **kwargs):
return func(*args, **kwargs)
# print(func)
# print(sys.modules[func.__globals__['__name__']])
setattr(cls, 'foo', wrapper) # Hardcoded function name 'foo'...Not ideal
# setattr(cls, func.__name__, wrapper)
# Note we are not binding func, but wrapper which accepts self but does exactly the same as func
return func # returning func means func can still be used normally
return decorator
class A:
pass
# No trickery. Class A has no methods nor variables.
a = A()
try:
a.foo()
except AttributeError as ae:
print(f'Exception caught: {ae}') # 'A' object has no attribute 'foo'
# Decorator can be written to take normal functions and make them methods
@add_method(A)
def foo():
print('hello world!')
a.foo()
Python AttributeError
adalah pengecualian yang terjadi ketika referensi atribut atau penugasan gagal. Hal ini dapat terjadi saat dilakukan upaya untuk mereferensikan atribut pada nilai yang tidak mendukung atribut tersebut
Apa Penyebab AttributeError
Python AttributeError
dimunculkan ketika referensi atribut yang tidak valid dibuat. Ini bisa terjadi jika atribut atau fungsi yang tidak terkait dengan tipe data direferensikan padanya. Misalnya, jika suatu metode dipanggil pada nilai bilangan bulat, AttributeError
akan dimunculkan
Contoh AttributeError Python
Berikut adalah contoh Python AttributeError
yang dimunculkan saat mencoba memanggil metode pada bilangan bulat
i = 1
i.append(2)
Dalam contoh di atas, sebuah metode dicoba untuk dipanggil pada bilangan bulat. Karena bilangan bulat dalam Python tidak mendukung metode apa pun, menjalankan kode di atas memunculkan AttributeError
Traceback (most recent call last):
File "test.py", line 2, in
i.append(2)
AttributeError: 'int' object has no attribute 'append'
_
Cara Memperbaiki AttributeError dengan Python
Untuk menghindari AttributeError
dalam kode Python, pemeriksaan harus dilakukan sebelum mereferensikan atribut pada objek untuk memastikan bahwa atribut itu ada. Fungsi
Traceback (most recent call last):
File "test.py", line 2, in
i.append(2)
AttributeError: 'int' object has no attribute 'append'
0 Python dapat digunakan untuk mengetahui semua atribut dan metode yang terkait dengan objek
Untuk mengatasi AttributeError
_, blok coba-kecuali dapat digunakan. Baris kode yang dapat membuang AttributeError
harus ditempatkan di blok
Traceback (most recent call last):
File "test.py", line 2, in
i.append(2)
AttributeError: 'int' object has no attribute 'append'
3, dan blok
Traceback (most recent call last):
File "test.py", line 2, in
i.append(2)
AttributeError: 'int' object has no attribute 'append'
4 dapat menangkap dan menangani kesalahan
Dengan menggunakan pendekatan di atas, contoh sebelumnya dapat diperbarui untuk menangani kesalahan
i = 1
try:
i.append(2)
except AttributeError:
print('No such attribute')>
_
Di sini, pemeriksaan dilakukan untuk AttributeError
menggunakan blok coba-kecuali. Ketika kode di atas dijalankan, blok
Traceback (most recent call last):
File "test.py", line 2, in
i.append(2)
AttributeError: 'int' object has no attribute 'append'
_4 menangkap
AttributeError
dan menanganinya, menghasilkan keluaran berikut
No such attribute
Lacak, Analisis, dan Kelola Kesalahan Dengan Rollbar
Mengelola kesalahan dan pengecualian dalam kode Anda itu menantang. Itu dapat membuat penggelaran kode produksi menjadi pengalaman yang mengerikan. Mampu melacak, menganalisis, dan mengelola kesalahan secara waktu nyata dapat membantu Anda melanjutkan dengan lebih percaya diri. Rollbar mengotomatiskan pemantauan dan penyortiran kesalahan, membuat perbaikan kesalahan Python lebih mudah dari sebelumnya. Cobalah hari ini
Bagaimana cara memperbaiki objek python tidak memiliki atribut?
Untuk menyelesaikan AttributeError , blok coba-kecuali dapat digunakan . Baris kode yang dapat membuang AttributeError harus ditempatkan di blok try, dan blok exception dapat menangkap dan menangani kesalahan.
Apa arti objek tidak memiliki atribut dalam python?
Ini hanya karena tidak ada atribut dengan nama yang Anda panggil, untuk Objek itu . Ini berarti Anda mendapatkan kesalahan saat "modul" tidak berisi metode yang Anda panggil.
Apa itu objek fungsi di python?
Di Python, fungsi berperilaku seperti objek lain, seperti int atau daftar. Itu artinya Anda bisa menggunakan fungsi sebagai argumen untuk fungsi lain, menyimpan fungsi sebagai nilai kamus, atau mengembalikan fungsi dari fungsi lain
Mengapa saya mendapatkan kesalahan atribut di python?
Salah satu error di Python yang paling sering terjadi adalah “AttributeError”. AttributeError dapat didefinisikan sebagai kesalahan yang muncul saat referensi atau penugasan atribut gagal. Misalnya, jika kita mengambil variabel x kita diberi nilai 10. Dalam proses ini misalkan kita ingin menambahkan nilai lain ke variabel itu