Запись своего класса в QDataStream
Пытаюсь записать свой класс в QDataStream
cbuffer.py
class CBuffer:
def __init__(self) -> None:
self.__val_1 = 'test_1'
self.__val_2 = 10
def __lshift__(self, *args, **kwargs):
args[0].writeQString(self.__val_1)
args[0].writeUInt64(self.__val_2)
def __rlshift__(self, *args, **kwargs): # этот медот вызывался в PyQt5 (Qt 5.10)
args[0].writeQString(self.__val_1)
args[0].writeUInt64(self.__val_2)
main.py
import sys
from PySide2.QtCore import *
from cbuffer import CBuffer
if __name__ == '__main__':
app = QCoreApplication(sys.argv)
custom_class = CBuffer()
b_array = QByteArray()
d_stream = QDataStream(b_array, QIODevice.WriteOnly)
d_stream << custom_class
ошибка
/usr/bin/python3.7 /home/user/example/main.py
Traceback (most recent call last):
File "/home/user/example/main.py", line 14, in <module>
d_stream << custom_class
TypeError: 'PySide2.QtCore.QDataStream.__lshift__' called with wrong argument types:
PySide2.QtCore.QDataStream.__lshift__(CBuffer)
Supported signatures:
PySide2.QtCore.QDataStream.__lshift__(str)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QBitArray)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QByteArray)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QCborArray)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QCborMap)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QCborValue)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QDate)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QDateTime)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QEasingCurve)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QJsonArray)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QJsonDocument)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QJsonValue)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QLine)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QLineF)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QLocale)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QMargins)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QMarginsF)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QPoint)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QPointF)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QRect)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QRectF)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QSize)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QSizeF)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QTime)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QUrl)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QUuid)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QRegularExpression)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QRegExp)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QTimeZone)
PySide2.QtCore.QDataStream.__lshift__(PySide2.QtCore.QVersionNumber)
Process finished with exit code 1
в PyQt5 (Qt5.10) этот код работал. В PySide2 как это делается?