bimka
@bimka
Осваиваю Питон

Как применить принцип DRY к коду?

У меня есть код, который отрисовывает геометрические фигуры:
def drawing_rectengle(a, b):
    figure = models.Rectangle(a, b)
    plt.plot([0, figure.a, figure.a, 0, 0], [0, 0, figure.b, figure.b, 0])
    plt.axis('equal')
    plt.show()   

def drawing_rhomb(h1, h2):
    figure = models.Rhomb(h1, h2)
    plt.plot([0, figure.h2 / 2, figure.h2, figure.h2 / 2, 0], [0, figure.h1 / 2, 0, -figure.h1 / 2, 0])
    plt.axis('equal')
    plt.show()   

def drawing_rhomb(h1, h2):
    figure = models.Rhomb(h1, h2)
    plt.plot([0, figure.h2 / 2, figure.h2, figure.h2 / 2, 0], [0, figure.h1 / 2, 0, -figure.h1 / 2, 0])
    plt.axis('equal')
    plt.show()

Как видно выше код часто повторяется. Как мне переделать отрисовку фигур, используя принцип DRY? Я думал сделать что-то вроде:
rhomb = [0, figure.h2 / 2, figure.h2, figure.h2 / 2, 0], [0, figure.h1 / 2, 0, -figure.h1 / 2, 0]
square = [0, figure.a, figure.a, 0, 0],[0, 0, figure.a, figure.a, 0]

def drawing_figure(a):
    figure = models.Square(a) # Как создавать разные объекты для разных классов, 
    plt.plot(square)
    plt.axis('equal')
    plt.show()
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Ну так передавайте класс:
def drawing_figure(mymodel, coords):
    figure = mymodel(coords) # Как создавать разные объекты для разных классов, 
    ...

drawing_figure(models.Square, [...])

А вообще тут ООП напрашивается...
Ответ написан
Комментировать
lxstvayne
@lxstvayne
Люблю Python
В matplotlib уже реализованы базовые фигуры: https://matplotlib.org/stable/api/patches_api.html...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы