gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:34 25 4
gpt4 key购买 nike

我正在使用 Biopython 的限制类进行计算机限制性消化。据我了解,为了用某种 enzyme 消化某个序列,必须实现 .catalyze() 方法。

digestTuple = Restriction.EcoRI.catalyse(this_seq)  # Or whichever enzyme is desired.

现在我应用一个条件来查看哪种 enzyme 被用作输入。例如:

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

if RS == 'EcoRI':
digestTuple = Restriction.EcoRI.catalyse(this_seq)

我对我预见自己需要的任何 enzyme 应用条件。这会占用一堆代码行并且效率低下。我希望能够在所有可能的 enzyme Restriction.AllEnzymes 的限制集中搜索成员资格。像这样:

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)

digestTuple = Restriction.EcoRI.catalyze(this_seq) 

因为它试图使用与 enzyme 关联的字符串名称,而不是实际调用正确的方法。

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

也许是这样的Invoking a method by its name但是在 python 中?

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

谢谢

最佳答案

使用getattr(),例如:

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

关于python - 如何调用方法名称为字符串的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27434689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com