Я уверен, что это было задано много раз, но я все еще не уверен, как реализовать множественные конструкторы в Python. Я знаю, что в python у меня может быть только один конструктор, отличный от java или C# или C++. Я до сих пор довольно новичок в этом. Короче говоря, мне нужно реализовать объект линии. Линия будет представлена функцией y = ax + b. Поэтому единственное, что мне нужно сохранить в строке, это a, b и boolean для специального случая, когда линия вертикальна (a = бесконечность). В этом случае a сохранит положение x линии. Чтобы создать строку, у меня есть 3 способа. 1 - непосредственно вставить a, b и boolean. 2 - положить 2 точки в виде кортежей. 3 - положить точку и вектор. Мой код до сих пор:Лучшая практика для реализации нескольких конструкторов в python
class line:
def __init__(self, a, b, noSlope):
self.a = a
self.b = b
self.noSlope = noSlope
def lineFromPoints(point1, point2):
deltaX = point2[0] - point1[0]
deltaY = point2[1] - point1[1]
if deltaX == 0:
return line(point1[0], 0, True)
else:
a = deltaY/deltaX
b = point1[1] - a * point1[0]
return line(a, b, False)
def lineFromVector(vector, point):
if vector[0] == 0:
return line(point1[0], 0, True)
else:
a = vector[1]/vector[0]
b = point1[1] - a * point1[0]
return line(a, b, False)
Не уверен, что, если есть лучший способ сделать это
Как это питон вопрос, пожалуйста, удалите C# и С ++ тегов, как это не имеет ничего общего с вашей проблемой – BugFinder
Спасибо.Я просто сделал –
Не уверен, что вы просите конкретно, и конструктор выглядит так, как есть, но несколько вещей, которые выделяются - имена классов всегда заглавные, поэтому назовите его 'class Line:'. Кроме того, для всех этих поисков индекса ('point1 [0]' и т. Д.) Вы можете сказать 'x1, y1 = point1' и' x2, y2 = point2', а затем ваш 'deltaX' может быть просто' x2-x1' и позже вы можете повторно использовать 'x1, x2, y1, y2' и т. д. В основном думайте о своих обозначениях, как бы я это сделал, если бы я пытался решить какое-то подобное математическое уравнение на бумаге. – Bahrom