Краткий ответ: да. Вы должны определить операторы сравнения, которые хотите поддерживать, если только вы не унаследуете это поведение от базового класса.
ел бы некоторую помощь на моем CSC HW. Он находится на классах / объектах, и это простой класс для определения круга с именем класса Circle (объект).
Точный текст HW (я завершил первые две части этого hw и, таким образом, эта третья часть является расширением начальной проблемы):
"" "Расширьте свой класс Circle, разрешив сравнение объектов Circle с помощью таких операторов, как <,>,> =, <=, == и! =, Где один круг считается" большим ", чем другой, если он находится в Факт больше (т. е. имеет большую площадь) другого круга.
Следующий код:
A = Circle(2, 5, 1.5)
B = Circle(-6, 1, 1)
print A < B, A != B, A >= B
Должен сгенерировать этот вывод:
False True True
Это мой код для отображения координат и радиуса круга:
class Circle(object):
def __init__(self, x=0, y=0, r=0):
self.x = x
self.y = y
self.r = r
def __str__(self,):
return "Circle at (%d , %d). Radius: %f" % (self.x, self.y, self.r)
def main():
print Circle(3, 5, 4.0)
main()
Выход этого класса "Круг в (3, 5). Радиус: 4: 000000"
Нам указали на определенную страницу нашего учебника с математическими операторами для классов:уравнение(),GT(),GE(),л(),ле(),Небраска() и т. д. Итак, я подумал, хотел ли мой профессор что-то подобное?
import math
class Circle(object):
def __init__(self, x=0, y=0, r=0):
self.x = x
self.y = y
self.r = r
def __str__(self):
return "Circle at (%d , %d). Radius: %f" % (self.x, self.y, self.r)
def calcArea(self, r):
self.r = r
return (math.pi)*(r**2)
def __gt__(self, circ1Radius, circ2Radius)
self.circ1Radius = circ1Radius
self.circ2Radius = circ2Radius
r1 = circ1Radius
r2 = circ2Radius
r1 > r2 or r2 > r1
def __ge__(self, circ1Radius, circ2Radius)
#And so on for __lt__(), __le__(), __ne__(), etc
def main():
A = Circle(3,4,1.5)
B = Circle(1,2,5.0)
C = Circle(5,7,7)
D = Circle(9,8,3)
print A < B, B > C, A < C, A >= C
main()
#Output should be "True, False, True, False"
Нужно ли нам давать определение / атрибут для каждого метода, который мы хотим использовать в классе? Заранее спасибо.