为了账号安全,请及时绑定邮箱和手机立即绑定

如何在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 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信