Итак, я пытаюсь реализовать класс точек, который создает точку, а затем вращает, масштабирует и переводит точку. Вот что я сейчас написал.Реализация класса точек в Python
class Point:
'''
Create a Point instance from x and y.
'''
def __init__(self, x, y):
self.x = 0
self.y = 0
'''
Rotate counterclockwise, by a radians, about the origin.
'''
def rotate(self, a):
self.x0 = math.cos(this.a) * self.x - math.sin(this.a) * self.y
self.y0 = math.sin(this.a) * self.x + math.cos(this.a) * self.y
'''
Scale point by factor f, about the origin.
Exceptions
Raise Error if f is not of type float.
'''
def scale(self, f):
self.x0 = f * self.x
self.y0 = f * self.y
'''
Translate point by delta_x and delta_y.
Exceptions
Raise Error if delta_x, delta_y are not of type float.
'''
def translate(self, delta_x, delta_y):
self.x0 = self.x + delta_x
self.y0 = self.y + delta_y
'''
Round and convert to int in string form.
'''
def __str__(self):
return int(round(self.x))
Что-то в этом коде генерирует ошибку. Теперь я не реализует ошибку ловли и у меня есть метод ошибки в верхнем
class Error(Exception):
def __init__(self, message):
self.message = message
Но как бы я поймать ошибку, если определенная переменная не типа поплавка?
Вот один из утверждений, если я использую:
def __init__(self, x, y):
if not isinstance(x, float):
raise Error ("Parameter \"x\" illegal.")
self.x = x
self.y = y
if not isinstance(y, float):
raise Error ("Parameter \"y\" illegal.")
self.x = x
self.y = y
Но что заставляет меня ошибку отступа. Итак, как именно я могу распечатать сообщение об ошибке, в котором указано, какая именно переменная вызывает проблему?
«Что-то в этом коде генерируется ошибка. " Что порождает ошибку? (Подсказка: сообщение об ошибке сообщает вам.) – kindall
Не должно 'self.x = 0' быть' self.x = x' и 'self.y = 0' быть' self.y = y'? – alecxe
Ошибка говорит " Traceback (самый последний вызов последнего): Файл "test_A.py", строка 17, в печати точки (0.0,1.0) TypeError: __str__ вернулся нестроковый (тип INT) " –