Matthew Hutson
Matthew Hutson

Reputation: 23

How do I pass a default method as a parameter in Python

Here is my code:

class class1():
    def __init__(self):
        pass
    def method1(self):
        pass

def independent_method(class1_instance, param2='method1'):
    return class1_instance.param2()

c = class1()
independent_method(c)

I get this error:

'class1' object has no attribute 'param2'

How do I get around this problem? I've tried different variations.

Upvotes: 1

Views: 50

Answers (1)

Marc Sances
Marc Sances

Reputation: 2614

Use __getattribute__ to fetch the method by its given name in param2:

class class1():
    def __init__(self):
        pass
    def method1(self):
        pass

def independent_method(class1_instance, param2='method1'):
    return class1_instance.__getattribute__(param2)()

c = class1()
independent_method(c)

You can also use getattr... that's actually a better way to do so.

class class1():
    def __init__(self):
        pass
    def method1(self):
        pass

def independent_method(class1_instance, param2='method1'):
    return getattr(class1_instance, param2)()

c = class1()
independent_method(c)

Upvotes: 2

Related Questions