首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Python init
EN

Stack Overflow用户
提问于 2017-02-22 11:43:34
回答 3查看 87关注 0票数 0
代码语言:javascript
运行
复制
class Sequence:
    TranscriptionTable = {
        "A":"U",
        "T":"A",
        "C":"G",
        "G":"C"
    }
    def __init__(self, seqstring):
        self.seqstring = seqstring.upper()
    def transcription(self):
        tt = ""
        for x in self.seqstring:
            if x in 'ATGC':
                tt += self.TranscriptionTable[x]
        return tt

DangerousVirus = Sequence('atggagagccttgttcttggtgtcaa')

print(DangerousVirus.transcription())

嗨,

我只想澄清一下数据是如何在类中流动的。例如,DangerousVirus = Sequence('atggagagccttgttcttggtgtcaa')中的数据是self还是seqstring?

当()中只有一个变量时,init如何才能有两个变量,我对此感到困惑。这不意味着只有self包含序列和seqstring是空的吗?

谢谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2017-02-22 11:45:54

self是对正在初始化的序列的引用。数据字符串以seqstring的形式传递。您可以通过添加一行来打印它来看到这一点:

代码语言:javascript
运行
复制
print(seqstring)
票数 0
EN

Stack Overflow用户

发布于 2017-02-22 11:53:11

__init__方法确实有两个参数,但是一旦创建了实例,self参数就被“绑定”到实例(__init__成为实例的一个所谓的绑定方法),因此不必再指定实例本身。如果像这样调用类中的未绑定__init__函数

代码语言:javascript
运行
复制
Sequence.__init__(instance, seqstring)

您确实必须显式地指定实例。self这个名字只是一个约定,它可以是定义中的任何东西。请看一看关于实例方法的教程部分,其中解释了这一点。

票数 0
EN

Stack Overflow用户

发布于 2017-02-22 11:59:38

正如其他答案所述,self arg将自动传递给方法调用。因此,必须将其作为第一个arg包含在方法定义中,但不能将其包含在方法调用中。

但是,不需要为此定义一个类,一个简单的函数就足够了。你可以使用内置的str.translate方法来非常有效地执行转录。对于大型序列,这比在transcription方法中使用Python循环要快得多,因为大部分工作是由编译后的代码完成的,因此它的运行速度与用C编写的速度一样快,而不是用Python编写的。

代码语言:javascript
运行
复制
trans_table = str.maketrans('ATCG', 'UAGC')

def transcribe(seq):
    seq = seq.upper()
    return seq.translate(trans_table)

seq = 'atggagagccttgttcttggtgtcaa'
print(transcribe(seq))

输出

代码语言:javascript
运行
复制
UACCUCUCGGAACAAGAACCACAGUU

正如文档中所提到的,任何不在翻译表中的字符都将在输出字符串中保持不变。例如,

代码语言:javascript
运行
复制
print('abcdABCD'.translate(trans_table))

输出

代码语言:javascript
运行
复制
abcdUBGD
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42390399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档