Есть ли способ остановить выполнение метода __init__?

2 ответа

Как говорится в сообщении об ошибке, __init__() должно возвращать None, а не «bool». Измените return True на голое return (что эквивалентно return None).

for point in points:
    if point == (self.x, self.y, pen):
        return

Его метод __init__ проверяет, есть ли точка на холсте черепахи. Если он обнаружит, что он уже есть, мне нужно предотвратить дальнейшее выполнение init.

Тем не менее, трудности, с которыми вы сталкиваетесь, свидетельствуют о недостатке дизайна. Точка не должна проверять внешний список точек и отказываться от построения; скорее код, создающий точку, должен выполнить проверку.

Я бы вытащил петлю из конструктора и сделал бы проверку вызывающей стороной.

0
ответ дан John Kugelman 18 January 2019 в 20:06
поделиться

Может быть, вы можете использовать что-то вроде этого?

class Point():
    def __init__(self, pen, points=points):
        self.x = pen.xcor()
        self.y = pen.ycor()
        for point in points:
            if point == (self.x, self.y, pen):
                return
        points.append((self.x, self.y, pen))
        self.pen = pen
        self.get()
0
ответ дан Andrey Leontyev 18 January 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: