python - resueltos - Cómo llamar dinámicamente a los métodos dentro de una clase usando la asignación de nombre de método a una variable
llamar una clase dentro de otra clase python (2)
Esta pregunta ya tiene una respuesta aquí:
class MyClass:
def __init__(self, i):
self.i = i
def get(self):
func_name = ''function'' + self.i
self.func_name() # <-- this does NOT work.
def function1(self):
//do something
def function2(self):
//do something
Error que recibo: TypeError: el objeto ''str'' no se puede llamar
¿Podría alguien ayudar con esto? He intentado un montón de permutaciones y combinaciones, pero sin éxito! (nota: ''self.func_name'' tampoco funciona)
Dos cosas:
En linea 8 uso,
func_name = ''function'' + str (self.i)
Definir una cadena para la asignación de funciones como,
self.func_options = {''function1'': self.function1, ''function2'': self.function2 }
Así que debería verse como:
clase MyClass:
def __init__(self, i): self.i = i self.func_options = {''function1'': self.function1, ''function2'': self.function2 } def get(self): func_name = ''function'' + str(self.i) func = self.func_options[func_name] func() # <-- this does NOT work. def function1(self): //do something def function2(self): //do something
def get(self):
def func_not_found(): # just in case we dont have the function
print "No Function "+self.i+" Found!"
func_name = ''function'' + self.i
func = getattr(self,func_name,func_not_found)
func() # <-- this should work!