【发布时间】:2013-03-05 21:20:35
【问题描述】:
我需要实现一个 DNA 类,它具有一个序列,该序列由字母表中的一串字符('A,C,G,T')组成,我需要重载一些运算符,例如小于、大于、等等。
这是我的代码:
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... 为什么?
【问题讨论】:
-
您的某些表达式使用
len,而其他表达式则没有。这是故意的吗? -
不应该使用 len..我应该删除它对不起
-
字符串的比较是按字母表的。 G 在 C 之后,所以返回 False。
标签: python operator-overloading string-length