it's exactly what it says. send_msg by itself has no meaning. You need a Method object first. So Method(some_command).send_msg() would work. This is assuming whatever you pass in as the command works. but send_msg is a function that will only ever be accessible once you have an object.
Edit 1
I don't see any reason to use an object here. There are a lot of different ways to accomplish what you want. What I usually do is something like this.
map = {}
def decorator(func):
map[func.__name__] = func
return func
@decorator
def send_msg(msg):
return True
received_input = 'send_msg'
print(map)
print(map[received_input]('a message'))
If you absolutely must have an object, then there are other things we could look at doing. Does this help?