【发布时间】:2018-10-25 00:52:10
【问题描述】:
我刚刚接触到 Python 中的 OOP 风格,并且正在使用类。对于这个特殊问题,我希望我的class Circle 成为我的class Point 的子类。但对某个容差进行相等检查也很重要。但是,我只是不知道如何声明圆变量如下__init__(self, circle, radius)。最重要的是,由于相等函数,我确实收到了元组错误(我知道这是由于元组不可变)。我尝试了无数种方法,但我只是粘贴最简单的形式,只是为了更清楚地呼应这个想法:
class Point:
def __init__(self, x, y):
self.x= x
self.y= y
def __eq__(self, other):
if abs(self.x-other.x)<0.00001 and abs(self.y-other.y)< 0.00001:
return True
else:
return False
class Circle(Point):
def __init__(self, centre, radius):
self.centre = Point(x,y)
self.radius= radius
def equals(self, other):
return Point.__eq__(other)<0.00001 and abs(self.radius-other.radius)<0.00001
我是否存在一些根本性的误解,或者我的目标是不可能/不聪明?任何形式的帮助表示赞赏。干杯。
【问题讨论】:
-
你确定你真的想让
circle成为point的子类。除非您认为一个点是一个半径为零的圆(我不认为),否则我不相信这是最好的方法。 包含 一个point,而不是继承自point。换句话说,has-a而不是is-a。 -
@paxdiablo 这就是我最初所做的,但后来我在使用 equals 函数时遇到了困难。它要么太乱,要么我会得到元组错误。
-
欢迎来到 StackOverflow!你写了一个很好的问题,所以我不确定为什么它被否决了。我修复了它,并且相信社区会帮助像你一样花时间展示他的努力的新用户。祝你好运。
标签: python-3.x class oop geometry point