TransWikia.com

Is there a way to set variable methods in Python?

Stack Overflow Asked by defarm on September 30, 2020

I would like to call a method from some_class in a function csv_output. However, some_class has several methods which run different functions that are meant to be saved in .csv format. In the code I’ve written so far, I type in a string which references a dictionary of specific methods with values which are specific_method. This is then saved as key_value. I create a variable file_out = some_class(i,j).key_value(). key_value is not a method of some_class – and that’s the exception I’m returned.

In essence, I would like to call a method, which isn’t defined in some_class, which will reflect user input.

def csv_output(specific_method,i,j):
    
    parent_dir = "/home/my_project/csv/"

    os.chdir(parent_dir)

    dir_of_types = {"1":"A()","2":"B()","3":"C()"}
    key_value = dir_of_types.get(specific_method)
        
    if specific_method not in dir_of_types.keys():
        print("No such method")
        print("Accepted methods are: 1,2,3")
        return
    else:
        pass
    
    #I have tried this
    file_out = some_class(i,j).key_value()

    #this
    file_out = rationals_repeating(res,shift)."%s" % (key_value())

    #and this
    file_out = rationals_repeating(res,shift)."%s" % (key_value)
    
    np.savetxt("%s%s/%s-%s.csv" % (parent_dir,specific_method,i,j), file_out,delimiter=',',fmt='%s')

for i in range(0,100):
    csv_output("1",1000,i)
    csv_output("2",1000,i)
    csv_output("3",1000,i)

One Answer

You can use getattr.

class some_class:
    def A(self):
        print('A')
    def B(self):
        print('B')
        
getattr(some_class(), 'A')()
getattr(some_class(), 'B')()

Correct answer by 정도유 on September 30, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP