Символ "<<" в Python
Имеется фрагмент кода
class PolygonPainter(BaseToolClass):
def __init__(self, canvas, annotationMgr, start):
super().__init__(canvas, annotationMgr)
self.start = start
self.polygon = QPolygonF() << self.start
self.polygonItem = self.canvas.addPolygon(self.polygon, self.linePen, self.areaBrush)
print('======== Polygon Annotation Drawing ========')
def mouseMoveEvent(self, event):
self.polygon << event.scenePos()
self.polygonItem.setPolygon(self.polygon)
self.polygonItem.update()
в строках
self.polygon = QPolygonF() << self.start
self.polygon << event.scenePos()
что означает символ "<<"?
Ответы (3 шт):
Автор решения: Komdosh
→ Ссылка
битовый сдвиг x << y, сдвинуть битовое представление x на y разрядов влево и заполнить справа нулями
Например:
a = 5 # 101
a = 5 << 2
print(a) # 20 or 10100
Автор решения: Xander
→ Ссылка
Как уже написали выше - по умолчанию это побитовый сдвиг.
Но нужно смотреть, не переопределён ли у класса QPolygonF специальный метод __lshift__ - авторы библиотеки вполне могли решить, что << - слишком красивый оператор, чтобы оставлять его для такой редкоиспользуемой операции, как битовый сдвиг, и, возможно, в данном случае он делает что-то совсем другое.
Автор решения: eri
→ Ссылка
В данном случае оператор << перегружен и используется как в Си++ со значением "записать точку в полигон". Это сделанно для общей семантики Qt.