class
August 27, 2023

Python боюнча класстарды салыштыруу

Pythonдо класстарды салыштыруу үчүн

__eq__ - Теңчилдик - ==

__ne__ - Теңсиздик - !=

__lt__ - Аз - <

__gt__ - Чоң - >

__le__ - Аз үчүн чоң салыштыруу же барабар - <=

__ge__ - Чоң же барабар - >=

методдору адатта жокко чыгарылат (теңчилик, теңсиздик, аз, чоң, аз үчүн салыштыруу же барабар, чоң же барабар). Бул жерде муну көрсөткөн бир мисал келтирилген:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        
    def __eq__(self, other):
        if isinstance(other, Point):
            return self.x == other.x and self.y == other.y
        return False
        
    def __ne__(self, other):
        return not self.__eq__(other)
    
    def __lt__(self, other):
        if isinstance(other, Point):
            return self.x < other.x and self.y < other.y
        return False
        
    def __gt__(self, other):
        return not self.__lt__(other) and not self.__eq__(other)
        
    def __le__(self, other):
        return self.__lt__(other) or self.__eq__(other)
        
    def __ge__(self, other):
        return not self.__lt__(other)
    
# Колдонуу
p1 = Point(2, 3)
p2 = Point(2, 3)
p3 = Point(4, 5)

print(p1 == p2)  # True - оператор ==
print(p1 != p3)  # True - оператор !=
print(p1 < p3)   # True - оператор <
print(p1 > p3)   # False - оператор >
print(p1 <= p2)  # True - оператор <=
print(p1 >= p2)  # True - оператор >=


Бул мисалда биз 'x' жана 'y' маанилери менен тегиздиктеги чекитти билдирген 'Point' классын түздүк.

Биз `__eq__`, `__ne__`, `__lt__`, `__gt__`, `__le__`, `__ge__` методдорун жокко чыгарып, `Point` классынын объекттеринин ортосунда салыштыруу операцияларын аткардык.

`Point` объекттерин салыштырганда биз алардын `x` жана `y` координаттарын текшеребиз.

Ошондой эле, биз салыштыруудан мурун башка операнддын объектинин түрүн текшерүү үчүн “isinstance” операторлорун колдонобуз.

Бул бир эле класстагы объекттердин ортосундагы салыштырууларды гана жүргүзүүгө жана башка маалымат түрлөрү менен салыштырганда каталарды болтурбоого мүмкүндүк берет.

Бул мисалда биз 'x' жана 'y' маанилери менен тегиздиктеги чекитти билдирген 'Point' классын түздүк. Биз `__eq__`, `__ne__`, `__lt__`, `__gt__`, `__le__`, `__ge__` методдорун жокко чыгарып, `Point` классынын объекттеринин ортосунда салыштыруу операцияларын аткардык.

Бул мисалда биз 'x' жана 'y' маанилери менен тегиздиктеги чекитти билдирген 'Point' классын түздүк. Биз `__eq__`, `__ne__`, `__lt__`, `__gt__`, `__le__`, `__ge__` методдорун жокко чыгарып, `Point` классынын объекттеринин ортосунда салыштыруу операцияларын аткардык.