如何在python的构造函数中调用没有参数的子类?

我有一个多父类,超父类是


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 个


慕慕森
浏览 141回答 2
2回答

森林海

您需要了解 OOP 的概念,如果您在对象构造期间发送参数,那么您的构造函数应该有参数来保存参数。item.pyclass Item:    def __init__(self, name):        self.name = name        def print_name(self):        print("The item name is " + self.name)Gadget.pyfrom item import Itemclass 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.pyfrom Gadget import Gadgetclass 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

一只甜甜圈

如果您的子类初始值设定项不对您传递的参数做任何事情,那么它们就会丢失。在您概述的模型中,您可以简单地省略子类中的初始值设定项以获得您想要的。class MobilePhone(Gadget):  # PEP8 calls for CamelCase here     pass在这种情况下,继承自的初始值设定项Gadget是self.name继承Item.print_name引用的设置。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python