python重载运算符 [英] python overloading operators
本文介绍了python重载运算符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要实现一个DNA类,该类具有一个属性序列,该序列由字母('A,C,G,T')中的一串字符组成,并且需要重载一些小于,大于,等.
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..
这是我的代码:
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)
时,它返回false
而不是true
...为什么?
when I print(dna_1>dna_2)
it returns false
instead of true
... Why ?
推荐答案
您可能想比较seq
s:
def __lt__(self, other):
return self.seq < other.seq
etc.
不是self
的seq
与other
,self
的seq
与other
的seq
.
other
这是另一个DNA.
如果需要比较长度:
def __lt__(self, other):
return len(self.seq) < len(other.seq)
etc.
这篇关于python重载运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文