Der*_*ick 15 python class object
我想在我的CSC硬件上提供一些帮助.它位于类/对象上,它是一个定义圆的简单类,名称为Circle(object).
HW的确切文本(我完成了这个hw的前两部分,因此第三部分是对初始问题的扩展):
""通过使用运算符(如<,>,> =,<=,==和!=)对Circle对象进行比较,展开Circle类,其中一个Circle被认为"大于",如果它在另一个圈子的事实更大(即,有更大的面积).
以下代码:
A = Circle(2, 5, 1.5)
B = Circle(-6, 1, 1)
print A < B, A != B, A >= B
Run Code Online (Sandbox Code Playgroud)
应生成此输出:
False True True
Run Code Online (Sandbox Code Playgroud)
这是我显示圆的坐标和半径的代码:
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()
Run Code Online (Sandbox Code Playgroud)
这个类的输出是"Circle at(3,5).Radius:4:000000"
我们被指向了教科书的某个页面,其中包含类的数学运算符: eq(),gt(),ge(),lt(),le(),ne()等.所以我在想,做了我的教授想要这样的东西?
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"
Run Code Online (Sandbox Code Playgroud)
我们是否必须为要在类中使用的每个方法创建定义/属性?先感谢您.
Jur*_*obl 29
您可以使用functools中的total_ordering装饰器,如果您提供__eq__(),则会生成所有缺少的比较方法.
给定一个定义一个或多个丰富的比较排序方法的类,这个类装饰器提供其余的.这简化了指定所有可能的丰富比较操作所涉及的工作:
这个类必须定义之一
__lt__(),__le__(),__gt__(),或__ge__().此外,该课程应该提供一种__eq__()方法.
DTi*_*ing 17
定义或覆盖类的比较运算符.http://docs.python.org/reference/expressions.html#notin
看起来你在正确的轨道上,除了你只需要传递第二个圆形对象进行比较.self指的是第一个圆形对象.所以self.r会给你第一个圆圈的r.您还需要从方法返回True或False.
def __gt__(self, circle2):
return self.r > circle2.r
Run Code Online (Sandbox Code Playgroud)
请注意,这只是比较圆圈的r.
| 归档时间: |
|
| 查看次数: |
33139 次 |
| 最近记录: |