Nạp chồng toán tử: so sánh

Lập trình hướng đối tượng trong Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Tính bằng nhau của đối tượng

class Customer:
  def __init__(self, name, balance):
    self.name, self.balance = name, balance  


customer1 = Customer("Maryam Azar", 3000)
customer2 = Customer("Maryam Azar", 3000)

customer1 == customer2
False
Lập trình hướng đối tượng trong Python

Tính bằng nhau của đối tượng

class Customer:
  def __init__(self, name, balance, id):
    self.name, self.balance = name, balance
    self.id = id    

customer1 = Customer("Maryam Azar", 3000, 123)
customer2 = Customer("Maryam Azar", 3000, 123)
customer1 == customer2
False
Lập trình hướng đối tượng trong Python

Biến là tham chiếu

customer1 = Customer("Maryam Azar", 3000, 123)
customer2 = Customer("Maryam Azar", 3000, 123)
print(customer1)
<__main__.Customer at 0x1f8598e2e48>
print(customer2)
<__main__.Customer at 0x1f8598e2240>
Lập trình hướng đối tượng trong Python

So sánh tùy biến

import numpy as np

# Hai mảng khác nhau nhưng dữ liệu giống nhau
array1 = np.array([1,2,3])
array2 = np.array([1,2,3])

array1 == array2
True
Lập trình hướng đối tượng trong Python

Nạp chồng __eq__()

class Customer:
  def __init__(self, id, name):
    self.id, self.name = id, name

# Được gọi khi dùng == def __eq__(self, other):
# In chẩn đoán print("__eq__() is called") # Trả về True nếu mọi thuộc tính khớp return (self.id == other.id) and \ (self.name == other.name)

 

 

  • __eq__() được gọi khi so sánh 2 đối tượng bằng ==
  • nhận 2 đối số, selfother - các đối tượng cần so sánh
  • trả về Boolean
Lập trình hướng đối tượng trong Python

So sánh đối tượng

# Hai đối tượng bằng nhau

customer1 = Customer(123, "Maryam Azar")
customer2 = Customer(123, "Maryam Azar")

customer1 == customer2
__eq__() is called
True
# Hai đối tượng khác nhau - khác id

customer1 = Customer(123, "Maryam Azar")
customer2 = Customer(456, "Maryam Azar")

customer1 == customer2
__eq__() is called
False
Lập trình hướng đối tượng trong Python

Toán tử so sánh khác

Toán tử Phương thức
== __eq__()
!= __ne__()
>= __ge__()
<= __le__()
> __gt__()
< __lt__()
  • __hash__() để dùng đối tượng làm khóa dict và trong set
Lập trình hướng đối tượng trong Python

Ayo berlatih!

Lập trình hướng đối tượng trong Python

Preparing Video For Download...