通过给出x和y坐标来定义点。可以使用distance_from方法计算两点之间的距离。点应至少公开提供以下属性x,y和distance_from。
通过给出中心点和半径来定义圆圈。 Circle的方法是is_inside,如果给定的点在圆圈内,则回答。圆圈应至少公开提供以下属性center,radius和is_inside。
这里的问题是我无法启动我的父类和基类。
旁注:funtions和类distance_from,Circle,circle.is_inside只需要一个p。
import math
class Point():
def __init__(self, xpoint, ypoint):
self.xpoint = xpoint
self.ypoint = ypoint
def distance_from(xpoint, ypoint):
distance = math.sqrt(((p1.xpoint-p2.xpoint)**2)+((p1.ypoint-p2.ypoint)**2))
print(distance)
class Circle(Point):
def __init__(self, xpoint, ypoint, r):
super(Circle, self).__init__(xpoint, ypoint)
self.r = r
def is_inside(xpoint, ypoint):
if self.r > distance:
print("False")
else:
print("True")
p1 = Point(0, 0)
p2 = Point(2, 4)
p1.distance_from(p2)
circle = Circle(p2,4)
circle.is_inside(p1)
答案 0 :(得分:0)
将你的系数更改为:我在你的错误中添加了评论
import math
class Point(object): # Add object here
def __init__(self, xpoint, ypoint):
self.xpoint = xpoint
self.ypoint = ypoint
def distance_from(self, xpoint, ypoint): # Missing self here
distance = math.sqrt(((p1.xpoint-p2.xpoint)**2)+((p1.ypoint-p2.ypoint)**2))
print(distance)
class Circle(Point):
def __init__(self, xpoint, ypoint, r):
super(Circle, self).__init__(xpoint, ypoint)
self.r = r
def is_inside(self, point): # Missing self here
if self.r > self.distance_from(point.xpoint, point.ypoint): # You'll have to callculate distance here
print("False")
else:
print("True")
p1 = Point(0, 0)
p2 = Point(2, 4)
p1.distance_from(p1.xpoint, p1.ypoint) # Missing points
c = Circle(p1.xpoint, p1.ypoint, 4) # Missing points
c.is_inside(p2)
如果你不想使用super()。 init ,请使用:
Point.__init__(self, xpoint, ypoint) # Change super to the superclass name. Add self to the init method
答案 1 :(得分:0)
一些注意事项:
成员函数应该只能访问通过self或fuction参数访问的变量,而不是全局范围。
import math
class Point(object):
def __init__(self, xpoint, ypoint):
self.xpoint = xpoint
self.ypoint = ypoint
# Here you where missing self and you were accessing p2 that exists in global scope.
def distance_from(self, another_point):
distance = math.sqrt(((self.xpoint-another_point.xpoint)**2)+((self.ypoint-another_point.ypoint)**2))
print(distance)
class Circle(Point):
def __init__(self, xpoint, ypoint, r):
super(Circle, self).__init__(xpoint, ypoint)
self.r = r
def is_inside(self, another_point):
# you forgot to calculate the distance
if self.distance_from(another_point) < self.r:
print("True")
else:
print("False")
p1 = Point(0, 0)
p2 = Point(2, 4)
p1.distance_from(p2)
#create a circle centered at 2,4 with radius 4
circle = Circle(2, 4, 4)
circle.is_inside(p1) # returns "True"
答案 2 :(得分:-1)
手动调用__init__
时,您必须提供self
参数。