Python 如何调用方法名称为字符串的方法

Python 如何调用方法名称为字符串的方法,python,getattr,Python,Getattr,我正在使用Biopython的限制类来执行硅片限制性消化。据我所知,为了用某种酶消化某种序列,必须实现.catalyste()方法 digestTuple = Restriction.EcoRI.catalyse(this_seq) # Or whichever enzyme is desired. 现在我应用一个条件,看看哪个酶被用作输入。例如: RS = restrictionSite # From user amb = IUPACAmbiguousDNA() this_

我正在使用Biopython的限制类来执行硅片限制性消化。据我所知,为了用某种酶消化某种序列,必须实现.catalyste()方法

digestTuple = Restriction.EcoRI.catalyse(this_seq)  # Or whichever enzyme is desired.
现在我应用一个条件,看看哪个酶被用作输入。例如:

RS = restrictionSite         # From user
amb = IUPACAmbiguousDNA()
this_seq = Seq(sequence, amb) # sequence from user

if RS == 'EcoRI':
    digestTuple = Restriction.EcoRI.catalyse(this_seq)
我为我预见到自己需要的任何酶应用一个条件。这会占用大量代码行,效率低下。我希望能够搜索所有可能的酶的限制集合中的成员,Restriction.alleezymes。大概是这样的:

if RS in Restriction.AllEnzymes:
    digestTuble = Restriction.RS.catalyze(this_seq)

else:
    print('Please type in enzyme name correctly')
这个问题是python并不等同于:

RS = "EcoRI" 
digestTuple = Restriction.RS.catalyze(this_seq)

因为它试图使用与酶相关联的字符串名称,而不是实际调用适当的方法

有没有一种方法可以使用搜索所有可能酶的单一条件调用此方法

也许是类似的东西,但在python中

关于这个问题的技术措辞让我有点困惑,所以我可能没有准确地解释这个问题。我很乐意回答任何澄清问题

谢谢你

简单到:

getattr(your_object,"methodname")()
例如:

class My_Class:
    def print_hi(self):
        print 'hi'

a = My_Class()

getattr(a,'print_hi')()
输出:

hi
就你而言:

RS = "EcoRI" 
digestTuple = getattr(Restriction, RS).catalyze(this_seq) 
使用
getattr()
,例如:

RS = "EcoRI"
digestTuple = getattr(Restriction, RS).catalyze(this_seq)

也许吧?答案和评论都很有效,谢谢!我向你点头,因为我认为你比第二句话略胜一筹。非常感谢。
RS = "EcoRI"
digestTuple = getattr(Restriction, RS).catalyze(this_seq)