I need to implement a DNA class which has attribute a sequence which consists of a string of characters from the alphabet ('A,C,G,T') and I need to overload some operators like less than,greater than,etc..
here is my code:
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)
PROBLEM:
when I print(dna_1>dna_2)
it returns false
instead of true
... Why ?
You probably want to compare seq
s:
def __lt__(self, other):
return self.seq < other.seq
etc.
Not self
's seq
with other
, self
's seq
with other
's seq
.
other
here is another DNA.
If you need to compare lengths:
def __lt__(self, other):
return len(self.seq) < len(other.seq)
etc.