Metode ajaib di Python adalah metode khusus yang dimulai dan diakhiri dengan garis bawah ganda. Mereka juga disebut metode dunder. Metode ajaib tidak dimaksudkan untuk dipanggil langsung oleh Anda, tetapi pemanggilan terjadi secara internal dari kelas pada tindakan tertentu. Misalnya, ketika Anda menambahkan dua angka menggunakan operator +, secara internal, metode Show Kelas bawaan di Python menentukan banyak metode ajaib. Gunakan fungsi ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', ' Seperti yang Anda lihat di atas, kelas int menyertakan berbagai metode ajaib yang dikelilingi oleh garis bawah ganda. Misalnya, metode >>> bilangan + 5 15 >>> bilangan. __tambah__(5) 15 Seperti yang Anda lihat, ketika Anda melakukan _0 secara langsung yang akan memberikan hasil yang sama. Namun, seperti yang disebutkan sebelumnya, metode sihir tidak dimaksudkan untuk dipanggil secara langsung, tetapi secara internal, melalui beberapa metode atau tindakan lainMetode ajaib paling sering digunakan untuk mendefinisikan perilaku kelebihan beban dari operator yang telah ditentukan sebelumnya dengan Python. Misalnya, operator aritmatika secara default beroperasi pada operan numerik. Ini berarti objek numerik harus digunakan bersama dengan operator seperti +, -, *, /, dll. Operator + juga didefinisikan sebagai operator penggabungan dalam kelas string, list, dan tuple. Kita dapat mengatakan bahwa + operator kelebihan beban Untuk membuat perilaku kelebihan muatan tersedia di kelas khusus Anda sendiri, metode ajaib yang sesuai harus diganti. Misalnya, untuk menggunakan + operator dengan objek dari kelas yang ditentukan pengguna, itu harus menyertakan metode Mari kita lihat bagaimana menerapkan dan menggunakan beberapa metode sulap yang penting __baru__() metodeBahasa seperti Java dan C# menggunakan operator baru untuk membuat turunan baru dari sebuah kelas. Dalam Python, metode ajaib 2 secara implisit dipanggil sebelum metode 3. Metode 2 mengembalikan objek baru, yang kemudian diinisialisasi oleh 3Contoh. __baru__() Salinan
Contoh di atas akan menghasilkan keluaran berikut saat Anda membuat turunan dari kelas 6>>> emp = Pegawai()__new__ metode ajaib disebut __init__ metode ajaib disebut Jadi, metode 2 dipanggil sebelum metode 3__str__() metodeMetode sulap lain yang berguna adalah _9. Itu diganti untuk mengembalikan representasi string yang dapat dicetak dari kelas yang ditentukan pengguna. Kami telah melihat 0 fungsi bawaan yang mengembalikan string dari parameter objek. Misalnya, _1 mengembalikan '12'. Saat dipanggil, ia memanggil metode _9 di kelas int>>> str(bil) '12' >>> #Ini setara dengan >>> int. __str__(bil) '12' Mari kita ganti metode 9 di kelas Karyawan untuk mengembalikan representasi string dari objeknyaContoh. __str__() Salinan
Lihat bagaimana fungsi _0 secara internal memanggil metode 9 yang didefinisikan dalam kelas Karyawan. Inilah mengapa ini disebut metode ajaib>>> e1=Karyawan()>>> cetak(e1) nama = gaji Swati = $ 10.000 __add__() metodeDalam contoh berikut, sebuah class bernama distance didefinisikan dengan dua atribut instance - ft dan inch. Penambahan dua objek jarak ini diinginkan untuk dilakukan dengan menggunakan operator + overloading Untuk mencapai ini, metode ajaib 9 mengembalikan representasi string objekContoh. Ganti __add__() Salinan
Jalankan skrip Python di atas untuk memverifikasi operasi + operator yang kelebihan beban >>> d1=jarak(3,10)>>> d2=jarak(4,4) >>> cetak("d1= {} d2={}". format(d1, d2)) d1= kaki. 3 masuk. 10 d2=ft. 4 masuk. 4 >>> d3=d1+d2 >>> cetak(d3) kaki. 8 masuk. 2 __ge__() metodeMetode berikut ditambahkan di kelas jarak untuk membebani operator 8Contoh. __ge__() Salinan
Metode ini dipanggil saat operator 8 digunakan dan mengembalikan Benar atau Salah. Dengan demikian, pesan yang sesuai dapat ditampilkan>>> d1=jarak(2,1)>>> d2=jarak(4,10) >>> d1>=d2 PALSU Metode Sihir PentingTabel berikut mencantumkan metode sihir penting di Python 3 Initialization and ConstructionDescription__new__(cls, other)Untuk dipanggil dalam instantiasi objek. __init__(self, other)Untuk dipanggil dengan metode __new__. __del__(self)Metode destruktor Operator dan fungsi unaryDeskripsi__pos__(self)Untuk dipanggil untuk unary positive e. g. + beberapa objek. __neg__(self)Untuk dipanggil untuk unary negatif e. g. -beberapa objek. __abs__(self) Untuk dipanggil dengan fungsi abs() bawaan. __invert__(self)Untuk dipanggil untuk inversi menggunakan operator ~. __round__(self,n) Untuk dipanggil dengan fungsi built-in round(). __floor__(self)Untuk dipanggil dengan matematika bawaan. lantai() fungsi. __ceil__(self) Untuk dipanggil dengan matematika bawaan. fungsi ceil(). __trunc__(self) Untuk dipanggil dengan matematika bawaan. fungsi trunc() Augmented AssignmentDescription__iadd__(self, other)To get called on addition with assignment e.g. a +=b.__isub__(self, other)To get called on subtraction with assignment e.g. a -=b.__imul__(self, other)To get called on multiplication with assignment e.g. a *=b.__ifloordiv__(self, other)To get called on integer division with assignment e.g. a //=b.__idiv__(self, other)To get called on division with assignment e.g. a /=b.__itruediv__(self, other)To get called on true division with assignment__imod__(self, other)To get called on modulo with assignment e.g. a%=b.__ipow__(self, other)To get called on exponentswith assignment e.g. a **=b.__ilshift__(self, other)To get called on left bitwise shift with assignment e.g. a<<=b.__irshift__(self, other)To get called on right bitwise shift with assignment e.g. a >>=b.__iand__(self, other)To get called on bitwise AND with assignment e.g. a&=b.__ior__(self, other)To get called on bitwise OR with assignment e.g. a|=b.__ixor__(self, other)To get called on bitwise XOR with assignment e.g. a ^=b. Ketik Metode Ajaib KonversiDeskripsi__int__(self)Untuk dipanggil dengan metode built-int int() untuk mengonversi tipe menjadi int. __float__(self)Untuk dipanggil dengan metode built-int float() untuk mengubah tipe menjadi float. __complex__(self)Untuk dipanggil dengan metode built-int complex() untuk mengubah tipe menjadi kompleks. __oct__(self)Untuk dipanggil dengan metode built-int oct() untuk mengubah tipe menjadi oktal. __hex__(self)Untuk dipanggil dengan metode built-int hex() untuk mengubah tipe menjadi heksadesimal. __index__(self)Untuk dipanggil pada konversi tipe ke int saat objek digunakan dalam ekspresi irisan. __trunc__(self) Untuk dipanggil dari matematika. metode trunc() String Magic MethodsDescription__str__(self)Untuk dipanggil dengan metode built-int str() untuk mengembalikan representasi string dari suatu tipe. __repr__(self)Untuk dipanggil dengan metode built-int repr() untuk mengembalikan representasi tipe yang dapat dibaca mesin. __unicode__(self)Untuk dipanggil dengan metode built-int unicode() untuk mengembalikan string unicode dari suatu tipe. __format__(self,formatstr)Untuk dipanggil dengan built-int string. format() metode untuk mengembalikan gaya string baru. __hash__(self)Untuk dipanggil dengan metode built-int hash() untuk mengembalikan bilangan bulat. __nonzero__(self)Untuk dipanggil dengan metode built-int bool() untuk mengembalikan True atau False. __dir__(self)Untuk dipanggil dengan metode built-int dir() untuk mengembalikan daftar atribut kelas. __sizeof__(self) Untuk dipanggil oleh built-int sys. metode getsizeof() untuk mengembalikan ukuran objek Attribute Magic MethodsDescription__getattr__(self, name)Dipanggil saat mengakses atribut class yang tidak ada. __setattr__(self, name, value)Dipanggil saat menetapkan nilai ke atribut kelas. __delattr__(self, name)Dipanggil saat menghapus atribut kelas Metode Ajaib OperatorDeskripsi__add__(self, other)Untuk dipanggil pada operasi add menggunakan + operator__sub__(self, other)Untuk dipanggil pada operasi pengurangan menggunakan - operator. __mul__(self, other)Untuk dipanggil pada operasi perkalian menggunakan * operator. __floordiv__(self, other)Untuk dipanggil pada operasi pembagian lantai menggunakan // operator. __truediv__(self, other)Untuk dipanggil pada operasi pembagian menggunakan / operator. __mod__(self, other)Untuk dipanggil pada operasi modulo menggunakan % operator. __pow__(self, other[, modulo])Untuk dipanggil menghitung daya menggunakan ** operator. __lt__(self, other)Untuk dipanggil pada perbandingan menggunakan < operator. __le__(self, other)Untuk dipanggil pada perbandingan menggunakan = operator Apa itu metode __ panggilan __ di Python?__panggilan__()
. Dalam Python, __call__() adalah digunakan untuk menyelesaikan kode yang terkait dengan objek yang dapat dipanggil . Objek apa pun dapat dikonversi menjadi objek yang dapat dipanggil hanya dengan menuliskannya dalam format pemanggilan fungsi.
Apa yang dilakukan metode __ Add__?Python __add__() adalah salah satu metode ajaib dalam Python yang mengembalikan objek baru(ketiga) i. e. penambahan dua objek lainnya . Ini mengimplementasikan operator tambahan "+" dengan Python.
Apa itu __ metode __ baru di Python?Python __new__() adalah metode konstruktor yang mengontrol pembuatan instance baru . Ini disebut pertama dan mengembalikan instance kelas baru. Python __init__() adalah metode penginisialisasi untuk mengatur atribut (mis. e. , state) dari instance yang baru dibuat. Itu disebut setelah penciptaan dan tidak mengembalikan apa pun, mis. e. , Tidak ada.
Apa arti __ di Python?Awalan garis bawah dimaksudkan sebagai petunjuk untuk pemrogram lain bahwa variabel atau metode yang dimulai dengan satu garis bawah ditujukan untuk penggunaan internal . Konvensi ini didefinisikan dalam PEP 8. Ini tidak ditegakkan oleh Python. Python tidak memiliki perbedaan yang kuat antara variabel "pribadi" dan "publik" seperti yang dimiliki Java. |