我正在通过python学习面向对象的编程。我正在尝试编写一个程序,为Fraction类编写三个特殊方法,重载运算符以执行a和b之间的丰富比较。 (a< b,a> b,a == b)。样本将是:
>>>a = Fraction(1, 2)
>>>b = Fraction(1, 3)
>>>a==b
False
>>>a > b
True
>>>a < b
False
>>>a = Fraction(4, 8)
>>>b = Fraction(2, 4)
>>>a ==b
True
>>>a > b
False
>>>a < b
False
我真的不明白它要做什么。任何有关如何帮助我入门的帮助都会很棒。谢谢。
答案 0 :(得分:2)
这是一个简单的代码,用于说明这应该如何作为示例。 它在python中很简单,因为它默认有 eq , ne ...你只需要更改逻辑部分。
class Fraction:
a = 0
b = 0
def __init__(self,A,B):
self.a=A
self.b=B
def __eq__(self,other):
return (self.b/self.a) == (other.b/other.a)
def __ne__(self,other):
return not(self.__eq__)
#*****************************
# below code only demo, not for your logical
#*****************************
def __lt__(self,other):
return (self.a<other.a)
def __le__(self,other):
return(self.a<=other.a)
def __gt__(self,other):
return(self.a>other.a)
def __ge__(self,other):
return(self.a>=other.a)
fra_1=Fraction(4,8)
fra_2=Fraction(2,4)
print("(fra_1==fra_2) is:",fra_1==fra_2)
答案 1 :(得分:0)
这是在类中实现魔术函数的问题。下面是定义的类。我已经实现了最多检查2个小数位的功能。
class Fraction:
def __init__(self,*fract):
self.fr=round(float(fract[0])/float(fract[1]),2)
def __eq__(self,f5):
return self.fr==f5.fr
def __lt__(self,f7):
return self.fr<f7.fr
def __gt__(self,f8):
return self.fr>f8.fr