Символ "<<" в 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.

https://doc.qt.io/qt-5/qpolygonf.html#details

→ Ссылка