[pyar] ¿cómo automatizar el llamado de objetos?

criss pro crisspro en hotmail.com
Mar Dic 24 16:23:38 -03 2019


Hola.


No se si sea posible automatizar el llamado de objetos desde un método 
de otra clase, me explico. En el códigoque dejo más abajo (intenté 
simplificarlo lo más que pude), lo que quiero hacer es desde el método 
tocar de la clase Persona, llamar al objeto "perro" o "gato" dependiendo 
del valor del parámetro "objeto" del propio método "tocar". Como ven, 
usé condicionales para esto, funciona, pero tengo la impresión, quizás 
errada, que pudiese ahorrar código construyendo un método que llamase 
automáticamente al objeto dependiendo del valor "objeto" del método, sin 
necesidad de programar una a una las posibilidades.


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

     def tocar (self, objeto):
         print('tocas el ', objeto)
         if objeto== 'gato':
             gato.sonar()
         elif objeto=='perro':
             perro.sonar()

class Animal:
     def __init__ (self, nombre, sonido):
         self.nombre= nombre
         self.sonido= sonido

     def sonar (self):
         print(self.sonido)

antonio= Persona('antonio')
gato= Animal('gato','miaaauuuu')
perro= Animal('perro','guau guau')

entrada= input('toca un animal')
if entrada== 'gato':
     antonio.tocar(entrada)
elif entrada=='perro':
     antonio.tocar(entrada)



Más información sobre la lista de distribución pyar