tengo una clase:evitar especificar todos los argumentos en una subclase
class A(object):
def __init__(self,a,b,c,d,e,f,g,...........,x,y,z)
#do some init stuff
Y tengo una subclase que necesita un extra arg (el último 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
Parece tonto para escribir todo el código de la caldera de la placa, por ejemplo, pasando todos los argumentos de B
's ctor a la llamada interior a A
' s ctor, desde entonces, cada cambio en A
's ctor debe ser aplicado a otros dos lugares en B
' código de s.
estoy adivinando Python tiene algún modismo para manejar estos casos los que soy consciente de. ¿Me puede apuntar en la dirección correcta?
Mi mejor presentimiento, es tener una especie de copia-Ctor para A y luego cambiar el código de B en
class B(A):
def __init__(self,instanceOfA,W):
A.__copy_ctor__(self,instanceOfA)
self.__W=W
Esto se adapte a mis necesidades ya que siempre se crea la subclase cuando se les da una instancia del padre clase, aunque no estoy seguro de si es posible ...
Si usted tiene que muchos argumentos, no usarían argumentos posicionales, pero tener a todos ellos/la mayoría de ellos como kwargs y use la sintaxis py3 '*' 'def __initi __ (arg1, arg2, * kwarg1 = ..., ..., kwargx = ..., w = ...) 'para forzar kwargs (= no confíe en el orden). Usar 'def __init __ (self, arg1, arg2, *, ** kwargs)' es más corto, pero no me gusta porque es un error completar el código en IDEs como pycharm. Aparte de perder un poco de pantalla, ¿cuál es el daño al escribir todos los kwargs? De todos modos, tendría que documentarlos todos en la docstring ... –