gpt4 book ai didi

python - 避免在子类中指定所有参数

转载 作者:IT老高 更新时间:2023-10-28 20:53:15 26 4
gpt4 key购买 nike

我有一个类:

class A(object):
def __init__(self,a,b,c,d,e,f,g,...........,x,y,z)
#do some init stuff

我有一个子类,它需要一个额外的 arg(最后一个 W)

class B(A):
def __init__(self.a,b,c,d,e,f,g,...........,x,y,z,W)
A.__init__(self,a,b,c,d,e,f,g,...........,x,y,z)
self.__W=W

编写所有这些样板代码似乎很愚蠢,例如将所有参数从 B 的 Ctor 传递到对 A 的 ctor 的内部调用,因为那么对 A 的 ctor 的每次更改都必须应用到 B 的代码中的另外两个位置。

我猜 python 有一些习惯用法来处理我不知道的这种情况。你能指出我正确的方向吗?

我最好的预感是为 A 提供一种 Copy-Ctor,然后将 B 的代码更改为

class B(A):
def __init__(self,instanceOfA,W):
A.__copy_ctor__(self,instanceOfA)
self.__W=W

这将满足我的需要,因为我总是在给定父类的实例时创建子类,尽管我不确定是否可能......

最佳答案

考虑到参数可以按名称或位置传递,我会编写代码:

class B(A):
def __init__(self, *a, **k):
if 'W' in k:
w = k.pop('W')
else:
w = a.pop()
A.__init__(self, *a, **k)
self._W = w

关于python - 避免在子类中指定所有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2215923/

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