[ Foro de Python ]

Uso de init y variables

03-May-2018 19:48
Julian Castro
1 Respuestas

Hola estoy aprendiendo programación orientada a objetos con python (3), y estoy en un ejercicio usando __init__,  logre crear una clase y sus variables, pero en la parte de
def hablar (self, palabras):
       for frase in palabras:
           print (self.nombre, ': ', frase)
empieza el error, les dejo el código completo y el error que me marca.

class Persona:
   def __init__(self, edad, nombre):
       self.edad= edad
       self.nombre=nombre

       print("Se ha creado a", self.nombre,"de", self.edad)

   def hablar (self, palabras):
       for frase in palabras:
           print (self.nombre, ': ', frase)

juan=Persona(18, "Juan")
juan.hablar ("Hola, estoy hablando", "Este soy yo")
luis=Persona(20, "Luis")
luis.hablar ("Hola, estoy hablando", "Este soy yo")

ERROR:
Se ha creado a Juan de 18
Traceback (most recent call last):
 File "C:\User\Desktop\Python\EjemploVarsInstancias.py", line 13, in <module>
   juan.hablar ("Hola, estoy hablando", "Este soy yo")
TypeError: hablar() takes 2 positional arguments but 3 were given

Qué es lo que hice mal?, gracias por su atención.


16-Jun-2018 23:41
Nacho Cabanes (+84)

Perdona el retraso en contestar.

Tu función espera que le pases un texto, pero le estás pasando dos. Deberías hacer dos llamadas consecutivas:

luis.hablar ("Hola, estoy hablando")
luis.hablar ("Este soy yo")

en vez de

luis.hablar ("Hola, estoy hablando", "Este soy yo")






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)