Python - argumentos __init__

CorePress2024-01-16  8

Tengo el siguiente problema.

class Operacoes(object):

    def __init__(self, *args):
        self.__numero = args

    def get_numero(self) -> int:
        return self.__numero

x = Operacoes(10).get_numero()
print(x)
#(10,)

Esto me tiene muy intrigado, ¿por qué alguien sabe cómo decírmelo?

args, debería devolver un int en el caso número 10, pero se devuelve una tupla.

2

10 se pasa como una tupla como has usado *args

Ceres

19/03/2021 a las 16:01

3

No veo el sentido de usar *args aquí. Simplemente haga def __init__(self, num): y tendrá el resultado deseado.

- M-Chen-3

19/03/2021 a las 16:01

¿Esto responde a tu pregunta? ¿Qué hace ** (doble estrella/asterisco) y * (estrella/asterisco) para los parámetros?

- Mike Scotty

19/03/2021 a las 16:11



------------------------------------

Es porque cuando llamas al método get_numero(),Se devuelve self.__numero. Y cuando se mira self.__numero en __init__(), se devuelven argumentos, que siempre son una tupla, incluso si solo se tiene 1 argumento.



------------------------------------

Veamos más de cerca la sintaxis. Tu asignaste

*args = 10

La estrella es realmente importante aquí porque descomprime una tupla/lista. Según la especificación de Python, args es una tupla, incluso si contiene un solo elemento.

Luego, self.__numero almacena una tupla. Cuando lo recuperas y lo imprimes, sigue siendo una tupla.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare