我正在编辑PROSS.py以处理蛋白质结构的.cif文件。现有PROSS.py里面,有以下功能(我相信这是正确的名称,如果它不与任何类相关联?),只是.py文件中存在:Python:将字符串转换为函数名称; getattr还是相等?
...
def unpack_pdb_line(line, ATOF=_atof, ATOI=_atoi, STRIP=string.strip):
...
...
def read_pdb(f, as_protein=0, as_rna=0, as_dna=0, all_models=0,
unpack=unpack_pdb_line, atom_build=atom_build):
我加入了一个optons解析器用于命令行参数,其中一个选项是指定除unpack_pdb_line外使用的备用方法。因此,选项解析器的相关部分是:
...
parser.add_option("--un", dest="unpack_method", default="unpack_pdb_line", type="string", help="Unpack method to use. Default is unpack_pdb_line.")
...
unpack=options.unpack_method
然而,options.unpack_method是一个字符串,我需要使用的功能,使用相同的名称作为内部options.unpack_method的字符串。如何使用getattr等将字符串转换为实际的函数名称?
感谢,
保罗
唉唉!辉煌! :-)我想,我需要更多的思考! – TallPaul 2009-11-15 20:27:29
+1使用调度字典更容易和更清晰。 – nosklo 2009-11-16 11:02:30