Как я могу передать имя функции в функцию, а затем вызвать ее? - PullRequest
1 голос
/ 02 ноября 2009
  1. Как передать имя функции в функцию и затем вызвать ее? Возможно ли это сделать без использования getattribute?

  2. Как я могу передать имя класса в функцию, а затем создать экземпляр класса? Я знаю, что мог бы просто передать экземпляр класса непосредственно функции, но важно, чтобы экземпляр класса создавался после вызова функции.

Ответы [ 4 ]

5 голосов
/ 02 ноября 2009
def outer(f):          # any name: function, class, any callable
    return f()         # class will be instantiated within the scope of the function
2 голосов
/ 02 ноября 2009
namespace = globals()
result = namespace[func_name]()
instance = namespace[class_name](*some_args)

Вы можете использовать собственный словарь (пространство имен) вместо globals.

Непонятно, зачем вам искусственные ограничения, например, не передавая напрямую объекты функций / классов, не используя getattr().

1 голос
/ 02 ноября 2009

Если у вас ограниченное количество параметров, которые вы планируете использовать, вы можете настроить словарь со строковыми ключами и значениями функций / классов.

0 голосов
/ 02 ноября 2009

Почему бы не использовать функцию и класс напрямую?

class A(object):
    pass
def f():
    pass
def g(func, cls):
    func()
    x = cls()
g(f, A)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...