Python 创建自定义类QPointF
我想用计算欧几里德距离的方法创建我的类点。Point类继承自QPointF类。但是当执行add或mul之类的操作时,结果不是Point类,而是QPointF。如何修复它?我应该覆盖所有魔法方法还是有其他解决方案Python 创建自定义类QPointF,python,class,pyqt,point,Python,Class,Pyqt,Point,我想用计算欧几里德距离的方法创建我的类点。Point类继承自QPointF类。但是当执行add或mul之类的操作时,结果不是Point类,而是QPointF。如何修复它?我应该覆盖所有魔法方法还是有其他解决方案 from PyQt5.QtCore import QPointF class Point(QPointF): def __init__(self, *args, **kwargs): super(QPointF, self).__init__(*args, *
from PyQt5.QtCore import QPointF
class Point(QPointF):
def __init__(self, *args, **kwargs):
super(QPointF, self).__init__(*args, **kwargs)
def dist(self):
return (self._p.x() * self._p.x() +
self._p.y() * self._p.y()) ** 0.5
a = Point(1, 2)
b = Point(2, 3)
print(a + b, type(a + b))
>> PyQt5.QtCore.QPointF(3.0, 5.0) <class 'PyQt5.QtCore.QPointF'>
从PyQt5.QtCore导入QPointF
课程分数(QPointF):
定义初始化(self,*args,**kwargs):
超级(QPointF,self)。\uuuuu初始值(*args,**kwargs)
def区(自我):
返回(self.\p.x()*self.\p.x()+
self._p.y()*self._p.y())**0.5
a=点(1,2)
b=点(2,3)
打印(a+b,键入(a+b))
>>PyQt5.QtCore.QPointF(3.0,5.0)
是的,您必须覆盖方法\uuuuu add\uuuuuuu
、\uuuu mul\uuuuu
和\uuu repr\uuuu
:
from PyQt5.QtCore import QPointF
class Point(QPointF):
def dist(self):
return (self._p.x() * self._p.x() + self._p.y() * self._p.y()) ** 0.5
def __add__(self, other):
return self.__class__(super(self.__class__, self).__add__(other))
def __mul__(self, other):
return self.__class__(super(self.__class__, self).__mul__(other))
def __repr__(self):
return "{}({}, {})".format(self.__class__.__name__, self.x(), self.y())
if __name__ == '__main__':
a = Point(1, 2)
b = Point(2, 3)
print(a, type(a))
print(b, type(b))
print(a + b, type(a + b))
a += Point(10, 10)
print(a, type(a))
a += QPointF(10, 10)
print(a, type(a))
print(a*3, type(a*3))
print("a: {}".format(a))
l = [a, b]
print(l)