第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建自定義類 QPointF

創(chuàng)建自定義類 QPointF

慕碼人2483693 2021-12-09 18:33:06
我想用計算歐幾里得距離的方法創(chuàng)建我的類 Point。Point 類繼承自 QPointF 類。但是在執(zhí)行 add 或 mul 等操作時,結(jié)果不是 Point 類,而是 QPointF。如何解決?我應該覆蓋所有魔術(shù)方法還是有其他解決方案?from PyQt5.QtCore import QPointFclass 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'>
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

是的,您必須覆蓋方法__add__,__mul__并且__repr__:


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)


查看完整回答
反對 回復 2021-12-09
  • 1 回答
  • 0 關(guān)注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號