亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在子類的另一個方法中調用超類的方法

在子類的另一個方法中調用超類的方法

qq_遁去的一_1 2023-07-18 15:02:12
我已經詢問了一些與我正在開發的游戲相關的問題。該問題是在開發過程中出現的,但實際上與游戲本身無關。我的代碼中有一個方法(子類中的“resize”),它調用其超類中的等效方法(超類的“resize”)。預期行為:超級調整大小調用 Super-do_rotozoom發生了什么:稱為 Sub-do_rotozoom 的超級調整大小這是一個代碼示例:子類:def do_rotozoom(self):    # do rotozoom stuff of subclassdef resize(self,factor):    super().resize(factor)    self.do_rotozoom()超類:def do_rotozoom(self):    #do rotozoom stuff of superclassdef resize(self,factor):    self.factor = factor    self.do_rotozoom()我找到了一個解決方法,其中涉及調用super().do_rotozoom()子類方法do_rotozoom(),然后由super().resize(). 我還發現,在這種情況下我可以刪除該行self.do_rotozoom()。在這種情況下,這是一個非常簡單的修復,但是在更復雜的情況下我會做什么,例如,如果我需要使用do_rotozoom()超類中的其他變量調用該方法,而不是在子類/另一個特定實現中調用該方法?換句話說,我如何能夠選擇在特定上下文中使用哪種方法?通常,您只能從子類訪問超方法,但不能從超類訪問超方法(不是超類的方法,而是它自己的方法)。我還沒有找到更好的標題...:D
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

開發人員往往更喜歡組合而不是繼承,它更易于管理。

我建議您做的就是在子類中包含超類的實例,并在需要時使用它。


查看完整回答
反對 回復 2023-07-18
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

子類的定義就是它繼承了超類的所有內容,除了它重寫的方法和屬性之外。

子類可以使用 引用其超類及其方法實現super(),就像您在示例中所做的那樣。

要么不要重寫do_rotozoom,要么引用超類方法來super().do_rotozoom()實現您需要的行為。


查看完整回答
反對 回復 2023-07-18
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號