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

How to call a child class with no parameter in contructor in python?

我有多个 Parent class 并且父 class 是

class Item:
    def __init__(self, name):
        self.name = name
    
    def print_name(self):
        print("The item name is " + self.name)

基数 class 是:

class Gadget(Item):
    def __init__(self, name,
       version):
        self.name = name
        self.version = version
 
    def print_attribute(self):
       pass
       #do for attribute

基class的child是:

class Mobile_Phone(Gadget):
    def __init__():
        pass

所以当我实例化 child class

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

它给我一个错误,contuctor 有 0 个位置参数,但给出了 3 个

您需要了解 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

如果您的 child class 初始化程序没有对您传递的参数做任何事情,那么它们就会丢失。在您概述的模型中,您可以简单地省略 child class 中的初始化程序以获得您想要的。

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

在这种情况下,从 Gadget 继承的初始化程序正在设置 self.name,继承的 Item.print_name 引用了它。