Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

324
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda