Найти - Пользователи
Полная версия: Написание callback функции
Начало » Python для новичков » Написание callback функции
1
nJLyTo
Требуется вызывать функцию по имени, переданного как аргумент другой функции. Первое, что придумал это использовать apply(). Но это один из вариантов, хотелось бы посмотреть другие варианты. Заранее благодаря.
def foo(*pr):
print pr

def set(arg):
apply(arg, (1,))

set(foo)
sky
аргумент это ссылка или строка?
если строка
то можно так
def ky():print 'ky'

def call_string(arg):globals()[arg]() # arg строка
call_string('ky')
# второй способ
def call_object(arg):arg() # есди arg ссылка на обьект...

call_object(ky)

#еще один вариант

def call_string2(arg):globals()[arg].__call__()

call_string2('ky')
nJLyTo
Пока точно не решил, но думаю, что сделаю объект в качестве аргумента. Код работает, спасибо.
Cleric
Почему нельзя просто вызвать arg из set?
Плюс еще apply устарел
AlexKiriukha
А что мешает вместо apply(arg, (1,)) использовать просто arg(1)? apply устарел и вроде как не нужен. И там ещё в коде используется set, а это название типа, т.е. так делать крайне не рекомендуется.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB