Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

320
Vistas
Add optional param to base class function, ignore in subclass

If I have a class hierarchy and use it like follows, including a third-party subclass that I can't change

class Base:
  def doit(self):
    pass

class Sub(Base):
  def doit(self):
    print('hi')

class SubInThirdPartyLibrary(Base):
  def doit(self):
    print('hi from library')

def doit(x: Base):
  x.doit()

doit(Sub())
doit(SubInThirdPartyLibrary())

Is there any way I can add an optional parameter to the base class, use that in the subclass, without breaking the third-party class?

class Base:
  def doit(self, msg: str = 'hi'):
    pass

class Sub(Base):
  def doit(self, msg: str = 'hi'):
    print(msg)

class SubInThirdPartyLibrary(Base):
  def doit(self):  # This isn't mine, I can't add the parameter here but want it to keep working.
    print('hi from library')

def doit(x: Base):
  x.doit(hi='hello')

doit(Sub())
doit(SubInThirdPartyLibrary())  # TypeError: doit() takes 1 positional argument but 2 were given
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

You can use inspect.signature:

import inspect

def doit(x: Base):
    sig = inspect.signature(x.doit)
    if 'msg' in sig.parameters:
        x.doit(msg='hello')
    else:
        x.doit()

I would recommend against doing this, and instead try another solution.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda