如何在 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
引用了它。
我有多个 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
引用了它。