python重载运算符 [英] python overloading operators

查看:102
本文介绍了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.

不是selfseqotherselfseqotherseq.

other这是另一个DNA.

如果需要比较长度:

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

etc.

这篇关于python重载运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆