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

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

如何在不改變父類的情況下正確繼承父類的方法?

如何在不改變父類的情況下正確繼承父類的方法?

九州編程 2023-09-19 14:08:02
我從我的一年級 CS 學生朋友那里得到了這個問題。問題:Xiaomi實現和Huawei繼承自 class 的類的設計SmartPhone,以便以下代碼生成以下輸出:給定代碼:class SmartPhone:     def __init__(self, name):         self.name = name     def check(self):          print(“The phone is working properly”)     #Write your code heref = Xiaomi(“Redmi Note 8”)c = Huawei(“Y9”)f.check()print(“=========================”)c.check()print(“=========================”)輸出應該是:This is Xiaomi Redmi Note 8The phone is working properly=========================This is Huawei Y9The phone is working properly=========================我的解決方案:class SmartPhone:     def __init__(self, name):         self.name = name     def check(self):         print(self.__str__()) #changing parent class         print('The phone is working properly')#Write your code hereclass Xiaomi(SmartPhone):    def __str__(self):        return f'This is Xiaomi {self.name}'class Huawei(SmartPhone):    def __str__(self):        return f'This is Huawei {self.name}'f = Xiaomi('“Redmi Note 8”')c = Huawei('“Y9”')f.check()print('=========================')c.check()print('=========================')我的解決方案通過更改父類來根據需要提供正確的輸出。但據說不改變父類SmartPhone,只構建子類來產生相同的結果。那么,如何在不改變父類的情況下產生結果呢SmartPhone?
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

您需要的是實現check調用父方法的方法:


class SmartPhone:

     def __init__(self, name):

         self.name = name


     def check(self):

          print(“The phone is working properly”)



#Write your code here

class Xiaomi(SmartPhone):

    def check(self):

        print(f"This is Xiaomi {self.name}")

        super().check()



class Huawei(SmartPhone):

    def check(self):

        print(f"This is Huawei {self.name}")

        super().check()



f = Xiaomi(“Redmi Note 8”)

c = Huawei(“Y9”)

f.check()

print(“=========================”)

c.check()

print(“=========================”)


查看完整回答
反對 回復 2023-09-19
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

當重寫超類的方法時,您需要調用 super。這意味著,


def check(self):

    print(f"This is Xiaomi {self.name}")

    super.check()

    // codes for overriding


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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