8

アルファベット ('A、C、G、T') の文字列で構成されるシーケンスの属性を持つ DNA クラスを実装する必要があり、より小さい、より大きいなどの演算子をオーバーロードする必要があります。

ここに私のコードがあります:

class DNA:
    def __init__(self, sequence):
        self.seq = sequence

    def __lt__(self, other):
        return (self.seq < other)

    def __le__(self, other):
        return(self.seq <= other)

    def __gt__(self, other):
        return(self.seq > other)

    def __ge__(self, other):
        return(len(self.seq) >= len(other))

    def __eq__(self, other):
        return (len(self.seq) == len(other))

    def __ne__(self, other):
        return not(self.__eq__(self, other))

dna_1=DNA('ACCGT')
dna_2=DNA('AGT')
print(dna_1 > dna_2)

問題:

私が代わりにprint(dna_1>dna_2)戻ってきたとき...なぜですか?FalseTrue

4

1 に答える 1

17

おそらくsを比較したいでしょうseq

def __lt__(self, other):
    return self.seq < other.seq

etc.

ではありません。self_ _seqotherselfseqotherseq

otherここに別のDNAがあります。

長さを比較する必要がある場合:

def __lt__(self, other):
    return len(self.seq) < len(other.seq)

etc.
于 2013-03-17T14:01:54.427 に答える