gpt4 book ai didi

派生类的python构造函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:21 24 4
gpt4 key购买 nike

class baseClass():
def __init__(self,mark,name):
self.mark = mark
self.name = name

class derivedClass(baseClass):

b1 = derivedClass(name='Jibin')
print b1.name

这是我最初的代码,运行良好。

(注意:我无权访问baseClass)

但后来我不得不将一个额外的属性rank传递给derivedClass。所以我这样编辑代码。

class baseClass():
def __init__(self,mark,name):
self.mark = mark
self.name = name

class derivedClass(baseClass):
def __init__(self,rank):
self.rank = rank

b1 = derivedClass(name='Jibin')
print b1.name

这导致了错误__init__() got an unexpected keyword argument 'name'

这是预期的,因为 derivedClass__init__ 没有参数 name

我不想在 derivedClass__init__ 中添加额外的参数 name b'cos in real baseClass 有 10 个参数而不是 2(mark,name) & 如果我将所有参数都作为附加参数提供给 derivedClass 我将弄乱它的参数列表。

注意:我知道使用 baseClass.__init__(self)super(derivedClass, self).__init__()

初始化 baseClass

最佳答案

也许你可以试试这样的东西

class BaseClass(object):
def __init__(self, mark=None, name=None): # you're using named parameters, declare them as named one.
self.mark = mark
self.name = name

class DerivedClass(BaseClass): # don't forget to declare inheritance
def __init__(self, rank=None, *args, **kwargs): # in args, kwargs, there will be all parameters you don't care, but needed for baseClass
super(DerivedClass, self).__init__(*args, **kwargs)
self.rank = rank

b1 = DerivedClass(name='Jibin')
print b1.name

关于派生类的python构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com