2013-05-21 2 views
3

Допустим, что я хочу сделать этометод Замены класс со строкой в ​​Python

hashlibAlgo = "md5" 
Hash= hashlib.**"hashlibAlgo"**("blah blah blah").hexdigest() 

Как я могу сделать это. Если я заменю имя метода на строку, оно явно не работает. Как я могу заставить его работать? В powershell легко, но я не могу понять это на Python.

+0

+1 за то, что один из лучших иллюстраций, когда 'getattr' полезно. (Обычно этот вопрос является признаком новичка, который хочет решить глупую проблему не так, но здесь вы пытаетесь решить совершенно разумную проблему правильно.) – abarnert

ответ

7

Вы можете получить функцию для выполнения с getattr:

>>> import hashlib 
>>> hashlibAlgo = "md5" 
>>> getattr(hashlib, hashlibAlgo)("blah blah blah").hexdigest() 
'55e562bfee2bde4f9e71b8885eb5e303' 
+0

Побей меня. (Я думаю, это то, что я получаю для редактирования: P) +1 – mgilson

+0

(0_0) Впервые я вижу эту функцию человека. Это превосходно. Благодарим вас за быстрый ответ и отличное решение. –

+0

@JuanC. - Он также принимает необязательный третий аргумент: 'getattr (вещь, 'строка', return_this_if_thing_has_no_string_attr)' – mgilson