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.