Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách overload toán tử so sánh trong Python


Python có các magic method để định nghĩa hành vi overload của toán tử. Các toán tử so sánh (<, <=, >, >=, == và !=) có thể được overload bằng cách cung cấp định nghĩa cho các magic method __lt__, __le__, __gt__, __ge__, __eq__ và __ne__.

Chương trình sau overload == và >= để so sánh các đối tượng của lớp distance.

class distance:
    def __init__(self, x=5, y=5):
        self.ft = x
        self.inch = y
    
    def __eq__(self, other):
        if self.ft == other.ft and self.inch == other.inch:
            return "both objects are equal"
        else:
            return "both objects are not equal"
    
    def __ge__(self, other):
        in1 = self.ft * 12 + self.inch
        in2 = other.ft * 12 + other.inch
        if in1 >= in2:
            return "first object greater than or equal to other"
        else:
            return "first object smaller than other"

d1 = distance(5, 5)
d2 = distance()
print(d1 == d2)

d3 = distance()
d4 = distance(6, 10)
print(d3 == d4)

d5 = distance(3, 11)
d6 = distance()
print(d5 >= d6)

Kết quả chương trình cho thấy việc sử dụng overload của toán tử so sánh == và >=:

both objects are equal
both objects are equal
first object smaller than other