私はこのクラスとサブクラスを持っていました:
クラス範囲:
def __init__(self, start, end):
self.setStart(start)
self.setEnd(end)
def getStart(self):
return self.start
def setStart(self, s):
self.start = s
def getEnd(self):
return self.end
def setEnd(self, e):
self.end = e
def getLength(self):
return len(range(self.start, self.end))
def overlaps(self, r):
if (r.getStart() < self.getEnd() and r.getEnd() >= self.getEnd()) or \
(self.getStart() < r.getEnd() and self.getEnd() >= r.getEnd()) or \
(self.getStart() >= r.getStart() and self.getEnd() <= r.getEnd()) or \
(r.getStart() >= self.getStart() and r.getEnd() <= self.getEnd()):
return True
else:
return False
クラス DNAFeature(範囲):
def __init__(self, start, end): self.setStart(start) self.setEnd(end) self.strand = none self.sequencename = none def getSeqName(self, s): return self.SeqName def setSeqName(self, s): self.sequencename = s def getStrand(self): if self.SeqName == 'plus': return 1 elif self.SeqName == 'minus': return -1 else: return 0 def setStrand(self, s): self.strand = s
そして、ここで私がしなければならないことは次のとおりです。エクソンを表す DNAFeature オブジェクトのグループを含み、DNAFeature の子クラスである新しいクラス GeneModel を作成します。以下のメソッドを実装する必要があります: getFeats() – 開始位置でソートされた DNAFeature オブジェクトのリストを返します addFeat(feat) – DNAFeature 特技を受け入れ、DNAFeature オブジェクトの内部グループに追加します setTranslStart(i) – 非負の int、開始 ATG コドンの開始位置を設定します getTranslStart() – int、開始 ATG コドンの開始位置を返します setTranslStop(i) – 正の int を受け入れ、停止コドンの終了位置を設定します getTranslStop() – int を返します。停止コドンの終了位置 setDisplayId(s) – 遺伝子モデルの名前を設定します。s は文字列 getDisplayId() – 遺伝子モデルの名前を返します。たとえば、AT1G10555.1 などの文字列を返します。GeneModel は、ユーザーが正しくない型と値をコンストラクターと「set」メソッドに渡すと、適切な ValueError および TypeError 例外を発生させる必要があります。</p>
思いついたことを書いてみたり、本を読んだり、コードを組み立てる方法を調べたりしましたが、プログラミングは初めてで、コードを正しく書く方法をほとんど理解していません。正直なところ、プログラミングの授業を受けるのはこれが初めてです。したがって、コードに面白い間違いがあった場合は、ご容赦ください。私はまだ自分のコードを完成させていませんが、まだ本を読んで、自分のコードのどこが間違っていて、どこが正しいのかを確認しています。しかし、私を正しい道に導くために、あなたの助けが本当に必要です。どうもありがとうございました。以下は私のコードです:
クラス GeneModel(DNAFeature):
def __init__(self, translstart, translend, displayid): self.setTranslStart(translstart) self.setTranslStop(translend) setDisplayId(displayid) def getFeats(): result = [] sort.self.getStart() return result def addFeat(feat): self.addFeat = feat return self.getStart+self.getEnd def setTranslStart(i): self.translstart = self.setStart self.translstart = non-negative int def getTranslStart(): return self.translstart def setTranslStop(i): self.translend = self.setEnd self.translend = "+" int def getTranslStop(): return self.translend def setDisplayId(s): self.displayid = re.compile('r'\AT1G[0-9]{5,5}\.[0-9]{,1}, IGNORECASE') def getDisplayId(): return self.displayid