Я создал родительский класс (геометрию) и подкласс (Point) несколькими способами. Я пытаюсь использовать методы в двух классах для запуска процессов в тестовой функции. Мне трудно получить доступ к этим методам внутри функции. Я создал три точки в тестовой функции, P1 = (0,3), P2 = (-3,7) и P3 = (-3,7), и хочу выполнить на них задачу. Например, def init (self, x, y): должен возвращать координату x, y точки, указанной в тестовой функции. Я пробовал все следующее: print (test (Point (p1))), тест печати (p1.Point) и печать p1.Point. Ни один из них не работал. Может кто-нибудь, пожалуйста, дайте указания о том, как я могу это выполнить?Python 2.7: Передача методов класса другой функции
Мой код:
class Geometry(object):
uniqueID = -1
def __init__(self):
Geometry.uniqueID += 1
self.id = Geometry.uniqueID
class Point(Geometry):
def __init__(self, x, y):
Geometry.__init__(self)
self.x = x
self.y = y
def __str__(self):
return '(%.2f, %.2f)' % (int(self.x*100)/100.0, int(self.y*100)/100.0)
def __eq__(self, point):
if type(point) is Point:
if self.x == point.x and self.y == point.y:
return True
else:
return False
else:
raise Exception("The input parameter has to be a Point object!")
def identify(self, other):
if type(other) is Point:
if self.id == other.id:
return True
else:
return False
else:
raise Exception("The input parameter has to be a Point object!")
def distance(self, other):
if type(other) is Point:
x_square = (other.x - self.x) ** 2
y_square = (other.y - self.y) ** 2
d = (x_square + y_square) ** 0.5
return float(d)
else:
raise Exception("The input parameter has to be a Point object!")
def quadrant(self):
output = ""
if self.x > 0 and self.y > 0:
output = "Quad I"
elif self.x < 0 and self.y > 0:
output = "Quad II"
elif self.x < 0 and self.y < 0:
output = "Quad III"
elif self.x > 0 and self.y < 0:
output = "Quad IV"
elif self.x == 0:
output = "Y-axis"
elif self.y == 0:
output = "X-axis"
elif self.x == 0 and self.y == 0:
output = "Origin"
return output
def test(p1,p2,p3):
p1 = Point(0, 3)
p2 = Point(-3, 7)
p3 = Point(-3, 7)
def collinear(p1, p2, p3):
p1x = p1.x
p1y = p1.y
# m1 = ?
# m2 = ?
def main():
print (p1.Point)
if __name__ == "__main__":
main()
Таким образом, p1 координаты должны быть перечислены в основной функции? Я пытался создать тестовую функцию с тремя точками, перечисленными в этой функции, P1 = (0,3), P2 = (-3,7) и P3 = (-3,7), и напечатать эти координаты с помощью основного функция. Я хочу, чтобы мой вывод возвращал координаты = (0, 3) –
, поэтому p1, p2 и p3 имеют локальную функцию для проверки работоспособности(), предполагающую, что функция типа main() не знает, что такое значения p1, p2, p3. Я отредактировал свое решение. – skippy
Привет, Скиппи, я не заметил никаких изменений. –