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

228
Visualizações
Pasar todos los argumentos de una función a otra función

Quiero tener una clase de la que pueda crear subclases que tenga una función de impresión que solo imprima en una condición particular.

Esto es básicamente lo que estoy tratando de hacer:

 class ClassWithPrintFunctionAndReallyBadName: ... def print(self, *args): if self.condition: print(*args)

Esto ya funciona, excepto por el hecho de que hay argumentos que deben establecerse explícitamente con la función de print predeterminada, como end (ejemplo: print('Hello, world!', end='') ). ¿Cómo puedo hacer que la función de print de mi nueva clase acepte argumentos como end='' y los pase a la print predeterminada?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La forma estándar de transmitir todos los argumentos es como sugirió @JohnColeman en un comentario:

 class ClassWithPrintFunctionAndReallyBadName: ... def print(self, *args, **kwargs): if self.condition: print(*args, **kwargs)

Como parámetros, *args recibe una tupla de argumentos que no son palabras clave (posicionales), y **kwargs es un diccionario de argumentos de palabras clave.

Al llamar a una función con * y ** , la primera tupla se expande como si los parámetros se pasaran por separado y el último diccionario se expande como si fueran parámetros de palabras clave.

over 4 years ago · Santiago Trujillo Relatório

0

Sé que se ve un poco feo pero funciona perfectamente, si está usando muchos argumentos de palabras clave y solo quiere construir una fachada para otro método:

 def print(self, print_message, end='\n', sep=' ', flush=False, file=None): if self.condition: print(**{key: value for key, value in locals().items() if key not in 'self'})

Aunque es mucho repetitivo, evita cualquier duplicación de declaraciones de parámetros.

También puede considerar usar un decorador para hacer que la parte condicional sea más pitónica. Pero tenga en cuenta que el decorador verifica la condición una vez antes de la instanciación de la clase.

over 4 years ago · Santiago Trujillo Relatório

0

Simplemente duplique los argumentos con nombre para la firma del método.

 def print(self, *args, end='\n', sep=' ', flush=False, file=None): if self.condition: print(*args, end=end, sep=sep, flush=flush, file=file)
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