Home > Back-end >  How do you call a function of a module in Python if the module should be called with a list or varia
How do you call a function of a module in Python if the module should be called with a list or varia

Time:06-29

I have a module, in the module is a subcomponent which contains a multitude of functions. I need to iterate through a list of names which contains the names of the modules and call the functions. this does not work, "because module has no attribute list". How do I make list[x] callable as a subcomponent of module instead of "list" the name.

file 1:

def x():
   print('x')

def y():
   print('y')

def z():
   print('z')

file 2:

import module # containing functions x(),y(),z()
list = ['x','y','z']
for x in list:
   module.list[x]()

CodePudding user response:

You can use getattr to access to the "content" of the module.

import my_module

func_names = ['x','y','z']
callable_funcs = []

for stuffs in dir(my_module):
    if stuff in func_names:
        callable_funcs.append(getattr(my_module, stuff))

# make a dictionary
funcs = dict(zip(func_names, callable_funcs))

# usage
x = funcs['x']
print(x())

CodePudding user response:

Try getattr():

import module

lst = ["x", "y", "z"]

for item in lst:
    getattr(module, item)()

Prints:

<function x at 0x7f2c56129e50>
<function y at 0x7f2c56129f70>
<function z at 0x7f2c560e4c10>
  • Related