Program Python membezakan antara operator == string dan kaedah __eq__().

WBOY
Lepaskan: 2023-09-22 15:13:02
ke hadapan
1033 orang telah melayarinya

Program Python membezakan antara operator == string dan kaedah __eq__().

Dalam Python, pengendali perbandingan (==) dan kaedah equals() digunakan dalam cara yang berbeza apabila bekerja dengan rentetan. Untuk membezakan antara operator == dan kaedah sama dalam Python, kita perlu menggunakannya dengan perbandingan rentetan. Perbandingan rentetan berlaku secara meluas apabila kami menggunakan rentetan dalam analisis data dan pembelajaran mesin. Dalam artikel ini, kita akan belajar cara membezakan antara operator == dan kaedah equals() apabila digunakan dengan rentetan.

== operator

dalam Python

== ialah operator perbandingan yang digunakan untuk membandingkan dua nilai rentetan. Mengembalikan Benar apabila nilai rentetan adalah sama dan Palsu apabila nilai rentetan tidak sama. Ia kembali benar walaupun rentetan disimpan di lokasi memori yang berbeza. Ia hanya membandingkan nilai rentetan untuk kesamaan.

Contoh

Dalam contoh di bawah, kami mentakrifkan dua nilai rentetan str1 dan str2 dan memulakannya dengan nilai rentetan yang sama. Apabila kita membandingkan rentetan str1 dan str2 menggunakan pengendali ==, ia kembali benar kerana nilai kedua-dua rentetan adalah sama. p>

str1 = "Hello World"
str2 = "Hello World"
if str1 == str2:
   print("The strings are equal.")
else:
   print("The strings are not equal.")
Salin selepas log masuk

Output

The strings are equal.
Salin selepas log masuk

Kaedah __eq__() dalam Python

Kaedah __eq__ dalam Python digunakan untuk menentukan cara membandingkan objek kelas untuk kesamaan. Kaedah __eq__ mengambil dua parameter: diri (objek di sebelah kiri operator ==) dan lain-lain (objek di sebelah kanan operator ==). Kaedah __eq__ sentiasa mengembalikan nilai boolean (Benar atau Salah). Jika ia mengembalikan sesuatu selain daripada nilai Boolean, TypeError akan terhasil.

Contoh

Dalam contoh di bawah, kami mencipta kelas yang dipanggil Orang yang mempunyai dua sifat, nama dan umur. Kemudian, kami mentakrifkan kaedah __eq__() dalam kelas untuk membandingkan sifat name dan umur objek person. Akhir sekali, buat dua kejadian kelas orang, p1 dan p2, dan bandingkannya menggunakan pengendali ==.

class Person:
   def __init__(self, name, age):
      self.name = name
      self.age = age

   def __eq__(self, other):
      if isinstance(other, Person):
         return self.name == other.name and self.age == other.age
      return False

p1 = Person("John", 30)
p2 = Person("John", 30)
if p1 == p2:
   print("p1 and p2 are equal")
Salin selepas log masuk

Output

p1 and p2 are equal
Salin selepas log masuk
Perbezaan antara kaedah

== dan __eq__

Kaedah Kaedah Kaedah Kaedah

== pengendali

__eq__kaedah

== ialah kelakuan lalai dalam python apabila membandingkan nilai dua objek.

__eq__ perlu ditakrifkan secara eksplisit dalam kelas.

== operator boleh digunakan untuk membandingkan objek daripada jenis data yang berbeza.

__eq__ hanya boleh membandingkan objek dari jenis yang sama

Ia tidak mempunyai banyak fleksibiliti penyesuaian.

__eq__ boleh disesuaikan untuk jenis perbandingan tertentu.

Ia tidak boleh diwarisi dan harus ditakrifkan secara eksplisit untuk setiap kelas.

__eq__ boleh diwarisi daripada kelas induk.

Kesimpulan

Dalam artikel ini, kami membincangkan cara == operator dan kaedah __eq__ berfungsi dalam Python. Operator == membandingkan rentetan tanpa melihat lokasi memori rentetan. Kaedah __eq__ ditakrifkan dalam kelas dan digunakan untuk membandingkan dua objek. Artikel ini juga membincangkan perbezaan antara operator == dan kaedah __eq__.

Atas ialah kandungan terperinci Program Python membezakan antara operator == string dan kaedah __eq__().. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan