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

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

如何在python的構造函數中調用沒有參數的子類?

如何在python的構造函數中調用沒有參數的子類?

慕慕森 2023-03-22 16:12:27
我有一個多父類,超父類是class Item:    def __init__(self, name):        self.name = name        def print_name(self):        print("The item name is " + self.name)基類是:class Gadget(Item):    def __init__(self, name,       version):        self.name = name        self.version = version     def print_attribute(self):       pass       #do for attribute基類的孩子是:class Mobile_Phone(Gadget):    def __init__():        pass所以當我實例化子類時item = Mobile_Phone("Iphone", "iOS")item.print_name()它給我一個錯誤,contuctor 有 0 個位置參數,但給出了 3 個
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

您需要了解 OOP 的概念,如果您在對象構造期間發送參數,那么您的構造函數應該有參數來保存參數。


item.py


class Item:

    def __init__(self, name):

        self.name = name

    

    def print_name(self):

        print("The item name is " + self.name)

Gadget.py


from item import Item


class Gadget(Item):

    def __init__(self, name, version):

        Item.__init__(self, name)

        self.version = version

 

    def print_attribute(self):

       print(self.name)

       print(self.version)

Mobile_Phone.py


from Gadget import Gadget


class Mobile_Phone(Gadget):

    def __init__(self, name, version):

        Gadget.__init__(self, name, version)



item = Mobile_Phone("Iphone", "iOS")

item.print_name()

輸出:


The item name is Iphone


查看完整回答
反對 回復 2023-03-22
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

如果您的子類初始值設定項不對您傳遞的參數做任何事情,那么它們就會丟失。在您概述的模型中,您可以簡單地省略子類中的初始值設定項以獲得您想要的。

class MobilePhone(Gadget):  # PEP8 calls for CamelCase here
    pass

在這種情況下,繼承自的初始值設定項Gadgetself.name繼承Item.print_name引用的設置。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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