2013-03-17 100 views
2

我需要實現一個DNA類,它具有屬性由字母表中的字符串('A,C,G,T')組成的序列,我需要重載一些運算符,如少於,比等。更大的python重載運算符

這裏是我的代碼:

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__) 

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

問題:當我打印(dna_1> dna_2)返回false而不是true..WHY會這樣???幫助,請

+1

一些你的表情的使用'len',有的則沒有。這是故意的嗎? – mtrw 2013-03-17 14:03:02

+0

len不應該被使用..我應該已經刪除它對不起 – 2013-03-17 14:07:54

回答

10

您可能要比較seq s:

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

etc. 

selfseqotherselfseqotherseq

other這裏是另一種DNA。

如果你需要比較長:

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

etc. 
+1

,看'__ge__','__ne__'和'__eq__',我想OP要比較__ge__的目的''len'' seq' – dmg 2013-03-17 14:03:26

+0

, __ne __等用於比較dna_1和dna_2的長度 – 2013-03-17 14:08:34

+0

難道你剛發佈的'len'應該被刪除嗎? – 2013-03-17 14:09:21