在Python中使用字符串替换类方法

3
假设我想要做这件事情。
hashlibAlgo = "md5"
Hash= hashlib.**"hashlibAlgo"**("blah blah blah").hexdigest()

我该如何做到这一点?如果我用字符串替换方法的名称,显然是不起作用的。我该怎么让它起作用?在 PowerShell 中很容易实现,但我无法在 Python 中找到解决方法。


这是getattr有用的最佳示例之一,值得点赞。(通常这种问题是新手想要用错误的方式解决愚蠢的问题的标志。但在这里,您正在尝试以正确的方式解决一个完全合理的问题。) - abarnert
1个回答

7
你可以使用 getattr 来执行函数:
>>> import hashlib
>>> hashlibAlgo = "md5"
>>> getattr(hashlib, hashlibAlgo)("blah blah blah").hexdigest()
'55e562bfee2bde4f9e71b8885eb5e303'

抢我的台了。 (我猜这就是我编辑的结果 :P)+1 - mgilson
第一次看到这个函数,真是太棒了。感谢您的快速回复和出色的解决方案。 - Juan C.
@JuanC. -- 它还接受一个可选的第三个参数:getattr(thing,'string',return_this_if_thing_has_no_string_attr) - mgilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接